[chromium-dev] Re: Chromium isn't shutting down cleanly

2009-09-25 Thread Jim Roskind
+1

On Wed, Sep 23, 2009 at 5:52 AM, progame prog...@chromium.org wrote:


 sounds like this issue http://crbug.com/20451

 On Sep 22, 8:39 pm, Daniel Cowx daniel.c...@gmail.com wrote:
  Can someone please provide a bit of insight into how to solve the
  following problem:
 
  1. Open Chromium  Options  Show saved passwords
  2. Click the Remove All button
 
  Now, *before* you click Yes or No, close the main browser window
  (e.g. by clicking the X in the upper right corner).  When you do this,
  all windows disappear, but the main browser process remains running.
  It looks like this is due to a nested invocation of MessageLoop::Run()
  (via chrome\browser\views\confirm_message_box_dialog.cc) and the fact
  that Quit is only exiting the most recent invocation.
 
  How can we cleanly quit the application in this case?
 
  Cheers,
  Daniel
 


--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Chromium isn't shutting down cleanly

2009-09-23 Thread progame

sounds like this issue http://crbug.com/20451

On Sep 22, 8:39 pm, Daniel Cowx daniel.c...@gmail.com wrote:
 Can someone please provide a bit of insight into how to solve the
 following problem:

 1. Open Chromium  Options  Show saved passwords
 2. Click the Remove All button

 Now, *before* you click Yes or No, close the main browser window
 (e.g. by clicking the X in the upper right corner).  When you do this,
 all windows disappear, but the main browser process remains running.
 It looks like this is due to a nested invocation of MessageLoop::Run()
 (via chrome\browser\views\confirm_message_box_dialog.cc) and the fact
 that Quit is only exiting the most recent invocation.

 How can we cleanly quit the application in this case?

 Cheers,
 Daniel
--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Chromium isn't shutting down cleanly

2009-09-22 Thread Peter Kasting
On Tue, Sep 22, 2009 at 10:39 AM, Daniel Cowx daniel.c...@gmail.com wrote:

 Can someone please provide a bit of insight into how to solve the
 following problem:

 1. Open Chromium  Options  Show saved passwords
 2. Click the Remove All button

 Now, *before* you click Yes or No, close the main browser window
 (e.g. by clicking the X in the upper right corner).  When you do this,
 all windows disappear, but the main browser process remains running.
 It looks like this is due to a nested invocation of MessageLoop::Run()
 (via chrome\browser\views\confirm_message_box_dialog.cc) and the fact
 that Quit is only exiting the most recent invocation.

 How can we cleanly quit the application in this case?


Explicitly CCing a couple people who know nested message loops best.

PK

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Chromium isn't shutting down cleanly

2009-09-22 Thread Jim Roskind
In the case you indicated, the main thread call stack probably includes the
invocation of the nested message loop.  I think this nesting is usally
required because we enter a special windows message loop that handles native
windows (dialog boxes).  We use some very fancy footwork to cause this
native message loop to actually provide time slices to service the Chrome
task queue etc..As a result, until that native window terminates (user
clicks OK) there is no way for the basic browser process to terminate
(cleanly) as the main UI thread is still running.
When *finally* you do hit the OK button on the native dialog, then the
dialog will terminate, and (if you have closed the main browser window)
the main UI thread can unwind and the browser process can really terminate.
 Typically a Quit() call to the MessageLoop sets the state to indicate that
the (current) loop should exit soon (when next it seems idle?).

...at least that was the way it was supposed to play out...

There is a chance that someone put in a nested message loop from Chrome for
a Chrome dialog.  In that case, the multitude of Quit() calls at various
nesting depths could be (incorrectly) aggregated by a nested Chrome message
loop.  Historically we've seen problems like that... but I thought we had
handled such (and strongly discouraged the use of nested message loops).
 Looking at the UI, I can see the Options dialog; the Show-All dialog; and
the Are You Sure dialog.  It would be most desirable if all of those dialogs
were native, and none involved a nested Chrome message loop.  If there was a
nested Chrome message loop, extra care would be needed to be sure the extra
Quit() calls were not aggregated (losing the extra one).

So that's something to look at.

If the problem is as mentioned, we'd need to either stop using a nested
message loop, or be a little more careful in the nested message loop about
losing the extra quit message.  A more traditional approach is to make the
last Are You Sure dialog application-modal, so that you can't terminate
the browser while it is displayed/pending (but I think we try as much as
possible to avoid modal dialogs).

At some point I recall looking at more targetted Quit() messages, that
terminate only a given MessageLoop, and also looking at counting the number
of Quit() invocations, so that the excess at a nested level propogated
upwards.  I think it was decided that such situations would better be
avoided.  (The count of the
number of Quit() messages can wreak havoc if a high level Quit() causes a
nested loop to terminate instead :-/ ).

Jim

p.s., Please cc me on the CL for any fix you decided on.


On Tue, Sep 22, 2009 at 10:47 AM, Peter Kasting pkast...@google.com wrote:

 On Tue, Sep 22, 2009 at 10:39 AM, Daniel Cowx daniel.c...@gmail.comwrote:

 Can someone please provide a bit of insight into how to solve the
 following problem:

 1. Open Chromium  Options  Show saved passwords
 2. Click the Remove All button

 Now, *before* you click Yes or No, close the main browser window
 (e.g. by clicking the X in the upper right corner).  When you do this,
 all windows disappear, but the main browser process remains running.
 It looks like this is due to a nested invocation of MessageLoop::Run()
 (via chrome\browser\views\confirm_message_box_dialog.cc) and the fact
 that Quit is only exiting the most recent invocation.

 How can we cleanly quit the application in this case?


 Explicitly CCing a couple people who know nested message loops best.

 PK


--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---