New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 856441 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 0
Type: Bug



Sign in to add a comment

M68 Beta: Opening "Manage other people" in Settings crashes Chrome

Project Member Reported by trumbull@chromium.org, Jun 26 2018

Issue description

Received several feedback reports from users that their Chromebook crashes if they try to open "Manage other people" in Settings

Unmanaged (Consumer) users running 68.0.3440.34 beta & 68.0.3440.25 beta.

User Feedback reports (with logs):
- http://listnr/product/208/report/85514210694
- http://listnr/product/208/report/85508925438
- http://listnr/product/208/report/85510307961
 
Labels: Hotlist-ConOps-CrOS
Labels: M-68
Owner: abodenha@chromium.org
Albert, do you know whom would own this sort of bug?
Cc: r...@chromium.org
Components: -UI>Shell UI>Settings UI>SignIn
Labels: -Pri-2 Pri-1
Owner: atwilson@chromium.org
Generally authentication falls to rkc@ and identity to atwilson@. This could fall under either (or both or neither).

I'm going to guess identity to start.
More details from Chromebook Forum:
"You cannot get to the 'Manage other people...' page at all. Typing in the URL manually (chrome://settings/accounts) does not work at all."

Comment 5 by dpa...@chromium.org, Jun 27 2018

Cc: steve...@chromium.org
Cc: atwilson@chromium.org
Owner: steve...@chromium.org
Status: Started (was: Unconfirmed)
I was able to reproduce this on a 68.0.3440.34 samus build with 2 unmanaged accounts using the owner account.

I can also reproduce this on a ToT dev build (69), but I don't currently have symbols. Investigating.

Labels: -Pri-1 Pri-0
Labels: ReleaseBlock-Stable
Owner: alemate@chromium.org
Status: Assigned (was: Started)
OK, the bug appears to be in users_private_api.cc:

https://cs.chromium.org/chromium/src/chrome/browser/chromeos/extensions/users_private/users_private_api.cc?q=users_private_api.cc&sq=package:chromium&dr&l=53

Which was added here:
https://chromium-review.googlesource.com/c/chromium/src/+/1072910


(gdb) bt
#0  RefcountedBrowserContextKeyedServiceFactory::GetBrowserContextToUse(content::BrowserContext*) const ()
    at ../../components/keyed_service/content/browser_context_keyed_base_factory.cc:25
#1  0x00005dd11f0cc657 in KeyedServiceFactory::GetServiceForContext(base::SupportsUserData*, bool) ()
    at ../../components/keyed_service/core/keyed_service_factory.cc:63
#2  0x00005dd11cc227ca in extensions::(anonymous namespace)::CreateApiUser(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, user_manager::User const&) ()
    at ../../chrome/browser/chromeos/extensions/users_private/users_private_api.cc:53
#3  0x00005dd11cc224a8 in extensions::UsersPrivateGetWhitelistedUsersFunction::Run() ()
    at ../../chrome/browser/chromeos/extensions/users_private/users_private_api.cc:164
#4  0x00005dd11c56f252 in ExtensionFunction::RunWithValidation() () at ../../extensions/browser/extension_function.cc:451
#5  0x00005dd11c570fc4 in extensions::ExtensionFunctionDispatcher::DispatchWithCallbackInternal(ExtensionHostMsg_Request_Params const&, content::RenderFrameHost*, int, base::RepeatingCallback<void (ExtensionFunction::ResponseType, base::ListValue const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, extensions::functions::HistogramValue)> const&)
    () at ../../extensions/browser/extension_function_dispatcher.cc:464
#6  0x00005dd11c570cf9 in extensions::ExtensionFunctionDispatcher::Dispatch(ExtensionHostMsg_Request_Params const&, content::RenderFrameHost*, int) () at ../../extensions/browser/extension_function_dispatcher.cc:404
#7  0x00005dd11c591642 in bool IPC::MessageT<ExtensionHostMsg_Request_Meta, std::__1::tuple<ExtensionHostMsg_Request_Params>, void>::Dispatch<extensions::ExtensionWebContentsObserver, extensions::ExtensionWebContentsObserver, content::RenderFrameHost, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&)>(IPC::Message const*, extensions::ExtensionWebContentsObserver*, extensions::ExtensionWebContentsObserver*, content::RenderFrameHost*, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&)) ()
    at ../../ipc/ipc_message_templates.h:64
#8  0x00005dd11c591587 in extensions::ExtensionWebContentsObserver::OnMessageReceived(IPC::Message const&, content::RenderFrameHost*) () at ../../extensions/browser/extension_web_contents_observer.cc:225
#9  0x00005dd11f69b1e9 in extensions::ChromeExtensionWebContentsObserver::OnMessageReceived(IPC::Message const&, content::RenderFrameHost*) () at ../../chrome/browser/extensions/chrome_extension_web_contents_observer.cc:106
#10 0x00005dd11c2fd9b7 in content::WebContentsImpl::OnMessageReceived(content::RenderFrameHostImpl*, IPC::Message const&) ()
    at ../../content/browser/web_contents/web_contents_impl.cc:937
#11 0x00005dd11c06d41b in content::RenderFrameHostImpl::OnMessageReceived(IPC::Message const&) ()
    at ../../content/browser/frame_host/render_frame_host_impl.cc:980
#12 0x00005dd11dbf8b3b in IPC::ChannelProxy::Context::OnDispatchMessage(IPC::Message const&) ()
    at ../../ipc/ipc_channel_proxy.cc:320
#13 0x00005dd11d98d809 in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) () at ../../base/callback.h:99
#14 0x00005dd11d9a3777 in base::MessageLoop::RunTask(base::PendingTask*) () at ../../base/message_loop/message_loop.cc:319
#15 0x00005dd11d9a3c67 in base::MessageLoop::DoWork() () at ../../base/message_loop/message_loop.cc:329
#16 0x00005dd11da1ce79 in base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) ()
    at ../../base/message_loop/message_pump_libevent.cc:210
#17 0x00005dd11d9c31e5 in base::RunLoop::Run() () at ../../base/run_loop.cc:102
#18 0x00005dd11d6959b8 in ChromeBrowserMainParts::MainMessageLoopRun(int*) () at ../../chrome/browser/chrome_browser_main.cc:2053
#19 0x00005dd11bf2bf04 in content::BrowserMainLoop::RunMainMessageLoopParts() () at ../../content/browser/browser_main_loop.cc:977
#20 0x00005dd11bf2e812 in content::BrowserMainRunnerImpl::Run() () at ../../content/browser/browser_main_runner_impl.cc:169
#21 0x00005dd11bf28541 in content::BrowserMain(content::MainFunctionParams const&, std::__1::unique_ptr<content::BrowserProcessSubThread, std::__1::default_delete<content::BrowserProcessSubThread> >) () at ../../content/browser/browser_main.cc:51
#22 0x00005dd11d683c6b in content::ContentMainRunnerImpl::Run() () at ../../content/app/content_main_runner_impl.cc:608
#23 0x00005dd11d68c570 in service_manager::Main(service_manager::MainParams const&) ()
    at ../../services/service_manager/embedder/main.cc:459
#24 0x00005dd11d681c71 in content::ContentMain(content::ContentMainParams const&) () at ../../content/app/content_main.cc:19
#25 0x00005dd11b40b2ff in ChromeMain () at ../../chrome/app/chrome_main.cc:101
#26 0x0000751b2fc14736 in __libc_start_main (main=0x5dd11b40b260 <main>, argc=28, argv=0x7ffe5a8874b8, init=<optimized out>, 
    fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe5a8874a8) at ../csu/libc-start.c:289
#27 0x00005dd11b40b129 in _start ()
(gdb) 

Cc: alemate@chromium.org
Owner: steve...@chromium.org
Status: Started (was: Assigned)
Found the source of the crash, it is a UI bug. CL with the fix is up:
https://chromium-review.googlesource.com/c/chromium/src/+/1118921
Project Member

Comment 11 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ef47cfb48bba0688ced57d91b1059f03dc82b99a

commit ef47cfb48bba0688ced57d91b1059f03dc82b99a
Author: Steven Bennetts <stevenjb@chromium.org>
Date: Fri Jun 29 00:34:23 2018

users_private: Do not use profile for other users

GetProfileByUser() will return null for a non logged in user, so do not
use IsOwnerProfile() to set is_owner.

This also fixes behavior in ChromeUserManagerImpl where the active user
was not correctly set as the owner when kStubCrosSettings is set
because UserManagerBase::UserLoggedIn is calling
RegularUserLoggedInAsEphemeral() instead of RegularUserLoggedIn() for
non owners, and the logic to set the user as the owner was in
RegularUserLoggedIn().

Bug:  856441 
Change-Id: I085d46accb3c97c1b6ee5615b838a5de796e3f8b
Reviewed-on: https://chromium-review.googlesource.com/1118921
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Alexander Alekseev <alemate@chromium.org>
Cr-Commit-Position: refs/heads/master@{#571341}
[modify] https://crrev.com/ef47cfb48bba0688ced57d91b1059f03dc82b99a/chrome/browser/chromeos/extensions/users_private/users_private_api.cc
[modify] https://crrev.com/ef47cfb48bba0688ced57d91b1059f03dc82b99a/chrome/browser/chromeos/extensions/users_private/users_private_apitest.cc
[modify] https://crrev.com/ef47cfb48bba0688ced57d91b1059f03dc82b99a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
[modify] https://crrev.com/ef47cfb48bba0688ced57d91b1059f03dc82b99a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.h

Labels: Merge-Request-68
Status: Fixed (was: Started)
To verify on 69:
1. Add two non enterprise users to a device
2. Log in with the owner account
3. Navigate to chrome://settings, go to the 'People' section, click on 'Manage other people'.

Ensure:
a) Chrome does not crash.
b) There is a list of users under 'Restrict sign-in to the following users:'
c) The owner (current user) has "(owner)" next to their name.

That said, I believe this patch is safe to merge without verification on 69 (I verified the fix on a device with a local build).

Cc: jdufault@chromium.org abodenha@chromium.org bhthompson@chromium.org tbuck...@chromium.org
 Issue 859082  has been merged into this issue.
Labels: -Merge-Request-68 Merge-Approved-68
Project Member

Comment 15 by bugdroid1@chromium.org, Jun 29 2018

Labels: -merge-approved-68 merge-merged-3440
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3c3c5f8d8c2b20b06196c7c590b36cf9472537af

commit 3c3c5f8d8c2b20b06196c7c590b36cf9472537af
Author: Steven Bennetts <stevenjb@chromium.org>
Date: Fri Jun 29 19:10:34 2018

users_private: Do not use profile for other users

GetProfileByUser() will return null for a non logged in user, so do not
use IsOwnerProfile() to set is_owner.

This also fixes behavior in ChromeUserManagerImpl where the active user
was not correctly set as the owner when kStubCrosSettings is set
because UserManagerBase::UserLoggedIn is calling
RegularUserLoggedInAsEphemeral() instead of RegularUserLoggedIn() for
non owners, and the logic to set the user as the owner was in
RegularUserLoggedIn().

TBR=stevenjb@chromium.org

(cherry picked from commit ef47cfb48bba0688ced57d91b1059f03dc82b99a)

Bug:  856441 
Change-Id: I085d46accb3c97c1b6ee5615b838a5de796e3f8b
Reviewed-on: https://chromium-review.googlesource.com/1118921
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Alexander Alekseev <alemate@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#571341}
Reviewed-on: https://chromium-review.googlesource.com/1120947
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/branch-heads/3440@{#570}
Cr-Branched-From: 010ddcfda246975d194964ccf20038ebbdec6084-refs/heads/master@{#561733}
[modify] https://crrev.com/3c3c5f8d8c2b20b06196c7c590b36cf9472537af/chrome/browser/chromeos/extensions/users_private/users_private_api.cc
[modify] https://crrev.com/3c3c5f8d8c2b20b06196c7c590b36cf9472537af/chrome/browser/chromeos/extensions/users_private/users_private_apitest.cc
[modify] https://crrev.com/3c3c5f8d8c2b20b06196c7c590b36cf9472537af/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
[modify] https://crrev.com/3c3c5f8d8c2b20b06196c7c590b36cf9472537af/chrome/browser/chromeos/login/users/chrome_user_manager_impl.h

Sign in to add a comment