Created attachment 8626516
bug336193.patch

Summary:

 * nsProfileLock is already rigged for handling signals and is already 
terminating (fatally) so it is only a small change to make it clean, this is 
preferable to a GTK-specific implementation.
 * A clean quit should be performed for SIGINT and SIGTERM, but not SIGQUIT as 
it is not intended to be clean.
 * nsAppStartup::Quit calls nsIAppShell::Exit asynchronously which does most of 
the work so it doesn't block the signal handler.
 * raise() needs to be called at some point after calling Quit().
 * To avoid SessionStore attempting to restore a crashed session, SessionFile 
needs to be closed properly, complete a final write, notify CrashMonitor with 
"sessionstore-final-state-write-complete" which then needs to write a 
checkpoint to a file asynchronously. This appears to happen before the observer 
notification "profile-change-teardown", even if it takes a long time, however 
documentation suggests the later notification "profile-before-change" is more 
appropriate.

This patch avoids SessionStore problems with SIGINT/SIGTERM by calling
Quit(eForceQuit) in the nsProfileLock signal handler and observing
"profile-before-change" for later raising the signal. As usual, if
termination takes too long a second SIGINT/SIGTERM can be sent which
causes immediate termination via the default handler and most systems
have a timeout that will also eventually kill the process.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/73536

Title:
  MASTER Firefox crashes on instant X server shutdown

To manage notifications about this bug go to:
https://bugs.launchpad.net/firefox/+bug/73536/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to