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

Issue 641291 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression: Browser crash is seen on clicking on reset button for second time in chrome://md-settings

Project Member Reported by bj00129...@techmahindra.com, Aug 26 2016

Issue description

Version: 54.0.2840.0 Dev
OS: Ubuntu 14.04, Windows

What steps will reproduce the problem?
1. Sign into chrome>>Navigate to chrome://md-settings/advanced page>>Click on Reset and Uncheck the Help check box present at the bottom left corner of the reset overlay.
2. Click on reset button and immediately click cancel(Please refer video)>> Now again click on reset button in reset overlay and Observe browser crash.

Expected: Browser should not crash on clicking on reset button for the second time.
Actual: Instead browser crash is seen.

Crash id: f4b8031100000000

This is Regression issue broken in M-48.Unable to do tool bisect as issue is seen only after signing into chrome which can't be done in chromium builds.

Manual bisect info:
Good build:48.0.2560.0
Bad build:48.0.2561.0

CHANGELOG URL:
https://chromium.googlesource.com/chromium/src/+log/48.0.2560.0..48.0.2561.0?pretty=fuller&n=10000

Suspecting  https://codereview.chromium.org/1418803004 from change-log.

@dpapad- Please help in reassigning if it is not related to your change.

Attaching screen-cast for reference.
 
Actual_Reset-1.ogv
2.0 MB View Download
Expected_Reset.ogv
1.2 MB View Download
Able to reproduce the issue on Ubuntu 14.04 using chrome latest Dev M54-54.0.2840.0.

Stack Trace:
==============
Thread 0 CRASHED [SIGILL @ 0x00007f08ba919a64 ] MAGIC SIGNATURE THREAD
0x00007f08ba919a64	(chrome -./out/Release/../../chrome/browser/profile_resetter/profile_resetter.cc:100 )	<name omitted>
0x00007f08b64a5889	(chrome -./out/Release/../../base/allocator/allocator_shim.cc:163 )	ShimCppNew
0x00007f08b92eae56	(chrome -./out/Release/../../chrome/browser/ui/webui/settings/reset_settings_handler.cc:215 )	settings::ResetSettingsHandler::ResetProfile
0x00007f08b92eb0cf	(chrome + 0x039470cf )	
0x00007f08b92ea86c	(chrome -./out/Release/../../chrome/browser/ui/webui/settings/reset_settings_handler.cc:123 )	settings::ResetSettingsHandler::HandleResetProfileSettings
0x00007f08b697d3c5	(chrome -./out/Release/../../base/callback.h:388 )	<name omitted>
0x00007f08b697db0f	(chrome + 0x00fd9b0f )	
0x00007f08b697dc42	(chrome -./out/Release/../../base/tuple.h:144 )	<name omitted>
0x00007f08bab3013d	(chrome -./out/Release/../../ui/views/widget/desktop_aura/desktop_screen_x11.cc:192 )	views::DesktopScreenX11::GetDisplayNearestWindow
0x00007f08b697da9f	(chrome -./out/Release/../../content/browser/webui/web_ui_impl.cc:91 )	<name omitted>
0x00007f08bb33fa0b	(chrome + 0x0599ba0b )	_fini
0x00007f08bb3406e8	(chrome + 0x0599c6e8 )	_fini
0x00007f08b697da50	(chrome -./out/Release/../../content/browser/webui/web_ui_impl.cc:91 )	<name omitted>
0x00007f08b69602d6	(chrome -./out/Release/../../content/browser/web_contents/web_contents_impl.cc:654 )	<name omitted>
0x00007f08b7b2e5e2	(chrome -./out/Release/../../base/profiler/tracked_time.cc:51 )	<name omitted>
0x00007f08b7b20ac5	(chrome -./out/Release/../../base/tracked_objects.cc:742 )	<name omitted>
0x00007f08b696e8d0	(chrome -./out/Release/../../base/tuple.h:144 )	IPC::MessageT<ViewHostMsg_FocusedNodeChanged_Meta, std::tuple<bool, gfx::Rect>, void>::Dispatch<content::RenderViewHostImpl, content::RenderViewHostImpl, void, void (content::RenderViewHostImpl::*)(bool, const gfx::Rect &)>
0x00007f08b7b2e5e2	(chrome -./out/Release/../../base/profiler/tracked_time.cc:51 )	<name omitted>
0x00007f08b696b862	(chrome -./out/Release/../../content/browser/renderer_host/render_view_host_impl.cc:836 )	<name omitted>
0x00007f08bb3400a4	(chrome + 0x0599c0a4 )	_fini
0x00007f08bb33fec5	(chrome + 0x0599bec5 )	_fini
0x00007f08b696bda4	(chrome -./out/Release/../../content/browser/renderer_host/render_view_host_impl.cc:859 )	<name omitted>
0x00007f08b689667e	(chrome -./out/Release/../../content/browser/renderer_host/render_widget_host_impl.cc:459 )	<name omitted>
0x00007f08af4d892c	(libc-2.19.so -clock_gettime.c:115 )	__clock_gettime
0x00003d9d0154017f		
0x00007f08b6888d62	(chrome -./out/Release/../../content/browser/renderer_host/render_process_host_impl.cc:1907 )	<name omitted>
0x00007f08af4d892c	(libc-2.19.so -clock_gettime.c:115 )	__clock_gettime
0x00007f08b7b07ab2	(chrome -./out/Release/../../base/time/time_posix.cc:98 )	<name omitted>
0x00007f08b7b2e5e2	(chrome -./out/Release/../../base/profiler/tracked_time.cc:51 )	<name omitted>
0x00007f08b8794a09	(chrome -./out/Release/../../ipc/ipc_channel_proxy.cc:314 )	<name omitted>
0x00007f08bb413bf5	(chrome + 0x05a6fbf5 )	_fini
0x00007f08b7b29a92	(chrome -./out/Release/../../base/callback.h:388 )	<name omitted>
0x00007f08b879482a	(chrome -./out/Release/../../ipc/ipc_channel_proxy.cc:128 )	<name omitted>
0x00007f08bb497edd	(chrome + 0x05af3edd )	_fini
0x00007f08b7accc38	(chrome -./out/Release/../../base/message_loop/message_loop.cc:488 )	<name omitted>
0x00007f08b55708b8	(libpthread-2.19.so + 0x0000f8b8 )	
0x00007f08b55708b8	(libpthread-2.19.so + 0x0000f8b8 )	
0x00007f08ae4c4068	(libxcb.so.1.1.0 + 0x0000c068 )	
0x00007f08b55708b8	(libpthread-2.19.so + 0x0000f8b8 )	
0x00007f08bb497edd	(chrome + 0x05af3edd )	_fini
0x00007f08b7accf97	(chrome -./out/Release/../../base/message_loop/message_loop.cc:497 )	<name omitted>
0x00007f08b7acc68a	(chrome -./out/Release/../../base/message_loop/message_loop.cc:621 )	<name omitted>
0x00007f08b65d118f	(chrome + 0x00c2d18f )	
0x00007f08bb497efc	(chrome + 0x05af3efc )	_fini
0x00007f08bb497edd	(chrome + 0x05af3edd )	_fini
0x00007f08b879482a	(chrome -./out/Release/../../ipc/ipc_channel_proxy.cc:128 )	<name omitted>
0x00007f08b65d118f	(chrome + 0x00c2d18f )	
0x00007f08bb497efc	(chrome + 0x05af3efc )	_fini
0x00007f08bb497edd	(chrome + 0x05af3edd )	_fini
0x00007f08b879482a	(chrome -./out/Release/../../ipc/ipc_channel_proxy.cc:128 )	<name omitted>
0x00007f08b419dbb7	(libX11.so.6.3.0 + 0x0003bbb7 )	
0x00007f08b419dcfb	(libX11.so.6.3.0 + 0x0003bcfb )	
0x00007f08b7ace43f	(chrome + 0x0212a43f )	
0x00007f08b7ace458	(chrome -./out/Release/../../base/message_loop/message_pump_glib.cc:267 )	WorkSourceDispatch
0x00007f08b44dfe03	(libglib-2.0.so.0.4002.0 + 0x00048e03 )	
0x00007f08b44eeb3f	(libglib-2.0.so.0.4002.0 + 0x00057b3f )	
0x00007f08b44e0047	(libglib-2.0.so.0.4002.0 + 0x00049047 )	
0x00007f08b44e00eb	(libglib-2.0.so.0.4002.0 + 0x000490eb )	
0x00007f08b7ace345	(chrome -./out/Release/../../base/message_loop/message_pump_glib.cc:309 )	base::MessagePumpGlib::Run
0x00007f08b6499aff	(chrome + 0x00af5aff )	
0x00007f08b6499b83	(chrome + 0x00af5b83 )	
0x00007f08b7ae687d	(chrome -./out/Release/../../base/run_loop.cc:35 )	<name omitted>
0x00007f08b7962c41	(chrome -./out/Release/../../chrome/browser/chrome_browser_main.cc:2121 )	ChromeBrowserMainParts::MainMessageLoopRun
0x00007f08b6682f4b	(chrome -./out/Release/../../content/browser/browser_main_runner.cc:64 )	content::BrowserMainRunnerImpl::Initialize
0x00007f08b6499b83	(chrome + 0x00af5b83 )	
0x00007f08b6680cc7	(chrome -./out/Release/../../content/browser/browser_main_loop.cc:959 )	content::BrowserMainLoop::RunMainMessageLoopParts
0x00007f08b668305c	(chrome -./out/Release/../../content/browser/browser_main_runner.cc:155 )	content::BrowserMainRunnerImpl::Run
0x00007f08b667b4b8	(chrome -./out/Release/../../content/browser/browser_main.cc:46 )	content::BrowserMain
0x00007f08b77345a6	(chrome -./out/Release/../../content/app/content_main_runner.cc:405 )	content::RunNamedProcessTypeMain
0x00007f08b7734eb6	(chrome -./out/Release/../../content/app/content_main_runner.cc:786 )	content::ContentMainRunnerImpl::Run
0x00007f08b77339cd	(chrome -./out/Release/../../content/app/content_main.cc:20 )	content::ContentMain
0x00007f08b6499cfa	(chrome -./out/Release/../../chrome/app/chrome_main.cc:85 )	ChromeMain
0x00007f08af3f1ec4	(libc-2.19.so -libc-start.c:287 )	__libc_start_main
0x00007f08b6499bac	(chrome + 0x00af5bac )	_start

Comment 2 by dpa...@chromium.org, Sep 14 2016

Status: Started (was: Assigned)

Comment 3 by dpa...@chromium.org, Sep 14 2016

There are two problems here.

1) The "cancel" button should not be enabled when clearing is in progress.
2) Because the user can close the dialog anyway, using the 'x' button or 'esc' key, the dialog should be smart enough to know that clearing is in progress when it is re-shown and therefore have the "reset" button still disabled.

The above matches exactly the behavior of this dialog in the old Options (see attached video comparing the two), and addresses the crash issue. I implemented this at https://codereview.chromium.org/2339853003.
reset_dialog_reopen.mp4
2.3 MB View Download

Comment 4 by dpa...@chromium.org, Sep 15 2016

Cc: dbeam@chromium.org bettes@chromium.org
Labels: Needs-Feedback
@bettes: Could you verify if the behavior seen in the screencast at comment#3 is OK? This matches the old Options behavior. Specifically the question is:

What should be done after the user clicks "Reset" in the reset profile dialog? The approaches mentioned so far are

1) Disable "reset" and "cancel" button, leave the dialog open. User can still close the dialog using 'esc' key or the 'x' button. In case the user brings the dialog up again, "reset" and "cancel" buttons remain disabled until the operation finishes, which closes the dialog.

2) (Mentioned at https://codereview.chromium.org/2339853003#msg12 by dbeam@): Immediately close the dialog. Once the operation finishes show a toast informing the user that it finished. It is unclear what happens in this approach when the user brings up the dialog again, while the clearing operation is in progress.

Comment 5 by dpa...@chromium.org, Sep 15 2016

Cc: tbuck...@chromium.org

Comment 6 by dbeam@chromium.org, Sep 15 2016

I asked Demetrios to not disable the "Cancel" button while a dialog is working because the user can still close the dialog via Escape or the (X) button, so why not leave "Cancel" enabled?

But now I understand why it'd be confusing; the main point of contention here is that we show a dialog like this:
____________________________
|                          |
|                        X |
|  Do something.           |
|                          |
|      [ Cancel ][ Do it ] |
|__________________________|

before they tap "Do it", it's fairly clear that "Cancel" means "Don't do it".

but /while/ an action is being performed, it's ambiguous.

do users think clicking "Cancel" stops doing things?  undoes or reverts anything that might've already been done?  or just closes the dialog?  protip: right now it just means "closes the dialog", as far as I know.

Closing the dialog immediately when starting the "Do it" action and showing a toast when done is great (but requires more work).

Alternatively, we could just... not use "Cancel" or change the text after the action is started.  this seems less great but less work.

Comment 7 by bettes@chromium.org, Sep 16 2016

Although a reasonable concern, I don't think the expectation of Cancel's function changes for the majority of users who click 'Do it.' I think we should keep the behavior that we do today which is #1 on comment 4: 

1) Disable "reset" and "cancel" button, leave the dialog open. User can still close the dialog using 'esc' key or the 'x' button. In case the user brings the dialog up again, "reset" and "cancel" buttons remain disabled until the operation finishes, which closes the dialog.



Comment 8 by dbeam@chromium.org, Sep 16 2016

thanks for the clarification, bettes@

Comment 9 by dbeam@chromium.org, Sep 19 2016

fwiw: I'll sign off on the code that makes this change, but I don't think it's clear what happens if you click (X) or press Esc while something is happening.  i bet half of users are trying to / expect that the action is cancelled or reverted.
Project Member

Comment 10 by bugdroid1@chromium.org, Sep 20 2016

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

commit 882a6dc0c0299130c7dc91bce0d2ba50c63cbec3
Author: dpapad <dpapad@chromium.org>
Date: Tue Sep 20 03:04:20 2016

MD Settings: Fix Reset profile dialog scenario that causes a crash.

 1) Disable the "Cancel" button when clearing is in progress. User can still
    close though using 'x' or 'esc' key.
 2) Stop destroying the dialog once it is closed. This allows the dialog
    to be re-shown with the progress spinner visible and action buttons disabled,
    if clearing is still in progress when it is re-shown.

This matches exactly the behavior of this dialog in the old Options.

BUG= 641291 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2339853003
Cr-Commit-Position: refs/heads/master@{#419664}

[modify] https://crrev.com/882a6dc0c0299130c7dc91bce0d2ba50c63cbec3/chrome/browser/resources/settings/reset_page/powerwash_dialog.js
[modify] https://crrev.com/882a6dc0c0299130c7dc91bce0d2ba50c63cbec3/chrome/browser/resources/settings/reset_page/reset_page.html
[modify] https://crrev.com/882a6dc0c0299130c7dc91bce0d2ba50c63cbec3/chrome/browser/resources/settings/reset_page/reset_page.js
[modify] https://crrev.com/882a6dc0c0299130c7dc91bce0d2ba50c63cbec3/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
[modify] https://crrev.com/882a6dc0c0299130c7dc91bce0d2ba50c63cbec3/chrome/browser/resources/settings/reset_page/reset_profile_dialog.js
[modify] https://crrev.com/882a6dc0c0299130c7dc91bce0d2ba50c63cbec3/chrome/browser/resources/settings/settings_resources.grd
[modify] https://crrev.com/882a6dc0c0299130c7dc91bce0d2ba50c63cbec3/chrome/test/data/webui/settings/reset_page_test.js

Status: Fixed (was: Started)

Sign in to add a comment