Discussion:
Issue 375785 in chromium: UI complete deadlock after calendar notification during opened save dialog from gmail (with New folder opened)
(too old to reply)
c***@googlecode.com
2014-06-04 22:02:45 UTC
Permalink
Updates:
Labels: -Pri-2 Pri-1

Comment #6 on issue 375785 by ***@chromium.org: UI complete deadlock
after calendar notification during opened save dialog from gmail (with New
folder opened)
http://code.google.com/p/chromium/issues/detail?id=375785

(No comment was entered for this change.)
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/a/chromium.org/group/chromium-bugs

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-bugs+***@chromium.org.
c***@googlecode.com
2014-06-05 18:49:41 UTC
Permalink
Updates:
Status: Assigned
Owner: ***@chromium.org

Comment #9 on issue 375785 by ***@chromium.org: UI complete deadlock after
calendar notification during opened save dialog from gmail (with New folder
opened)
http://code.google.com/p/chromium/issues/detail?id=375785

(No comment was entered for this change.)
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/a/chromium.org/group/chromium-bugs

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-bugs+***@chromium.org.
c***@googlecode.com
2014-06-19 00:13:42 UTC
Permalink
Updates:
Status: Started

Comment #13 on issue 375785 by ***@chromium.org: UI complete deadlock
after calendar notification during opened save dialog from gmail (with New
folder opened)
http://code.google.com/p/chromium/issues/detail?id=375785

This bug is caused by Cocoa's incorrect implementation of NSSavePanel. When
the user taps the "New folder" button on the save panel, NSSavePanel blocks
the current run of the run loop, shows a modal dialog, and starts listening
for specific events in a nested CFRunLoop. Simple attempts (e.g.
performSelector:withObject:afterDelay:) to show an NSAlert will wait until
the outer run loop regains control, and the modal "new folder" dialog has
disappeared. Chrome's MessagePump is not blocked, and continues to feed
events into the nested CFRunLoop. If one of these events triggers the
appearance of an NSAlert, then the UI will end up in a state with 2 modals,
neither of which can be dismissed.

The easiest way to reproduce the problem independent of a particular
website is to show an NSSavePanel, and to post a delayed task via
base::MessageLoop to show an NSAlert. Navigate to the NSSavePanel's modal
dialog, and then wait for the delayed task to run. Once it does, the UI
becomes borked.

For reference, I've included part of a stack trace. The debugger is paused
at the moment when Chrome is attempting to present an NSAlert while the
NSSavePanel is in its modal dialog state.
frame #20: 0x0bcfacaa
libbase.dylib`base::MessageLoop::RunTask(this=0x2d55a620,
pending_task=0xbfffcca0) + 1498 at message_loop.cc:450
frame #21: 0x0bcfb172
libbase.dylib`base::MessageLoop::DeferOrRunPendingTask(this=0x2d55a620,
pending_task=0xbfffcca0) + 98 at message_loop.cc:462
frame #22: 0x0bcfb441
libbase.dylib`base::MessageLoop::DoWork(this=0x2d55a620) + 321 at
message_loop.cc:576
frame #23: 0x0bbccda8
libbase.dylib`base::MessagePumpCFRunLoopBase::RunWork(this=0x2d546b40) +
168 at message_pump_mac.mm:558
frame #24: 0x0bbcbfb1
libbase.dylib`base::MessagePumpCFRunLoopBase::RunWorkSource(info=0x2d546b40)
+ 49 at message_pump_mac.mm:533
frame #25: 0x96b9cb6f
CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ +
15
frame #26: 0x96b8d96b CoreFoundation`__CFRunLoopDoSources0 + 235
frame #27: 0x96b8d06e CoreFoundation`__CFRunLoopRun + 1022
frame #28: 0x96b8c9fa CoreFoundation`CFRunLoopRunSpecific + 394
frame #29: 0x96b8c85b CoreFoundation`CFRunLoopRunInMode + 123
frame #30: 0x941e8b5d HIToolbox`RunCurrentEventLoopInMode + 259
frame #31: 0x941e88e2 HIToolbox`ReceiveNextEventCommon + 526
frame #32: 0x941e86bd
HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 92
frame #33: 0x92e0f369 AppKit`_DPSNextEvent + 1602
frame #34: 0x92e0e890 AppKit`-[NSApplication
nextEventMatchingMask:untilDate:inMode:dequeue:] + 119
frame #35: 0x9318cedc AppKit`-[NSApplication _realDoModalLoop:peek:] +
828
frame #36: 0x9318cb8d AppKit`-[NSApplication _doModalLoop:peek:] + 209
frame #37: 0x9318b556 AppKit`-[NSApplication runModalForWindow:] + 235
frame #38: 0x97755ad2 FinderKit`-[FI_NewFolderController
runModalForSavePanel:] + 332
frame #39: 0x9770bb3b FinderKit`-[FIFinderViewGutsController
makeNewFolderForSavePanel:] + 124
frame #40: 0x97711117 FinderKit`-[FIFinderView
makeNewFolderForSavePanel:] + 59
frame #41: 0x937eb65f AppKit`-[NSNavFinderViewFileBrowser
makeNewFolderForSavePanel:] + 43
frame #42: 0x934ba362 AppKit`-[NSSavePanel newFolder:] + 57
frame #43: 0x98eca2af libobjc.A.dylib`-[NSObject
performSelector:withObject:] + 70
frame #44: 0x9303b8a5 AppKit`-[NSApplication sendAction:to:from:] + 438
frame #45: 0x00358c04 libchrome_main_dll.dylib`-[BrowserCrApplication
sendAction:to:from:](self=0x28347a00, _cmd=0x938ace19, anAction=0x9394af89,
aTarget=0x2d5c5260, sender=0x2d5cbb20) + 1476 at
chrome_browser_application_mac.mm:446
frame #46: 0x9303b6ad AppKit`-[NSControl sendAction:to:] + 102
frame #47: 0x9308ac7b AppKit`-[NSCell _sendActionFrom:] + 159
frame #48: 0x930a5f2a AppKit`-[NSCell
trackMouse:inRect:ofView:untilMouseUp:] + 2465
frame #49: 0x930a5161 AppKit`-[NSButtonCell
trackMouse:inRect:ofView:untilMouseUp:] + 513
frame #50: 0x930a4785 AppKit`-[NSControl mouseDown:] + 690
frame #51: 0x93020a9d AppKit`-[NSWindow sendEvent:] + 11953
frame #52: 0x92fbc91d AppKit`-[NSApplication sendEvent:] + 4034
frame #53: 0x00358d8e libchrome_main_dll.dylib`-[BrowserCrApplication
sendEvent:](self=0x28347a00, _cmd=0x938a773b, event=0x27770d70) + 110 at
chrome_browser_application_mac.mm:459
frame #54: 0x92e011dc AppKit`-[NSApplication run] + 823
frame #55: 0x0bbcdd22
libbase.dylib`base::MessagePumpNSApplication::DoRun(this=0x2d546b40,
delegate=0x2d55a620) + 434 at message_pump_mac.mm:905
frame #56: 0x0bbcc8a8
libbase.dylib`base::MessagePumpCFRunLoopBase::Run(this=0x2d546b40,
delegate=0x2d55a620) + 104 at message_pump_mac.mm:460
frame #57: 0x0bcfa38e
libbase.dylib`base::MessageLoop::RunHandler(this=0x2d55a620) + 318 at
message_loop.cc:400
frame #58: 0x0bd6d7e8 libbase.dylib`base::RunLoop::Run(this=0xbffff2b8)
+ 72 at run_loop.cc:49
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/a/chromium.org/group/chromium-bugs

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-bugs+***@chromium.org.
c***@googlecode.com
2014-06-28 02:04:04 UTC
Permalink
Comment #14 on issue 375785 by ***@chromium.org: UI complete deadlock
after calendar notification during opened save dialog from gmail (with New
folder opened)
http://code.google.com/p/chromium/issues/detail?id=375785#c14

The following revision refers to this bug:

https://chromium.googlesource.com/chromium/src.git/+/aa22ab042e9586fd22dd142e7262751931ebed7e

commit aa22ab042e9586fd22dd142e7262751931ebed7e
Author: ***@chromium.org
<***@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Sat Jun 28 01:35:54 2014

mac: Fix a gmail/calendar UI deadlock.

NSSavePanel is implemented incorrectly, and if an NSAlert is presented while
the NSSavePanel has its "New folder" modal dialog open, the UI will
deadlock.
This CL dispatches the presentation of the NSAlert to the top of the
CFRunLoop
via '-performSelector:withObject:afterDelay:', which fixes this
instantiation
of the bug. (The selector will not be performed until after the "New folder"
modal dialog is dismissed.)

BUG=375785

Review URL: https://codereview.chromium.org/345643004

git-svn-id: svn://svn.chromium.org/chrome/trunk/***@280476
0039d316-1c4b-4281-b951-d872f2087c98
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/a/chromium.org/group/chromium-bugs

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-bugs+***@chromium.org.
c***@googlecode.com
2014-06-28 02:06:04 UTC
Permalink
Comment #15 on issue 375785 by ***@chromium.org: UI complete deadlock
after calendar notification during opened save dialog from gmail (with New
folder opened)
http://code.google.com/p/chromium/issues/detail?id=375785#c15

------------------------------------------------------------------
r280476 | ***@chromium.org | 2014-06-28T01:35:54.411605Z

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.h?r1=280476&r2=280475&pathrev=280476
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.mm?r1=280476&r2=280475&pathrev=280476

mac: Fix a gmail/calendar UI deadlock.

NSSavePanel is implemented incorrectly, and if an NSAlert is presented while
the NSSavePanel has its "New folder" modal dialog open, the UI will
deadlock.
This CL dispatches the presentation of the NSAlert to the top of the
CFRunLoop
via '-performSelector:withObject:afterDelay:', which fixes this
instantiation
of the bug. (The selector will not be performed until after the "New folder"
modal dialog is dismissed.)

BUG=375785

Review URL: https://codereview.chromium.org/345643004
-----------------------------------------------------------------
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/a/chromium.org/group/chromium-bugs

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-bugs+***@chromium.org.
c***@googlecode.com
2014-06-30 23:33:06 UTC
Permalink
Updates:
Status: Fixed

Comment #16 on issue 375785 by ***@chromium.org: UI complete deadlock
after calendar notification during opened save dialog from gmail (with New
folder opened)
http://code.google.com/p/chromium/issues/detail?id=375785

(No comment was entered for this change.)
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/a/chromium.org/group/chromium-bugs

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-bugs+***@chromium.org.
c***@googlecode.com
2014-06-30 23:36:06 UTC
Permalink
Updates:
Labels: Merge-TBD

Comment #17 on issue 375785 by ***@chromium.org: UI complete deadlock
after calendar notification during opened save dialog from gmail (with New
folder opened)
http://code.google.com/p/chromium/issues/detail?id=375785#c17

Is there a merge required here?
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/a/chromium.org/group/chromium-bugs

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-bugs+***@chromium.org.
c***@googlecode.com
2014-06-30 23:42:08 UTC
Permalink
Updates:
Labels: -Merge-TBD Merge-Requested

Comment #18 on issue 375785 by ***@chromium.org: UI complete deadlock
after calendar notification during opened save dialog from gmail (with New
folder opened)
http://code.google.com/p/chromium/issues/detail?id=375785

(No comment was entered for this change.)
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/a/chromium.org/group/chromium-bugs

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-bugs+***@chromium.org.
Loading...