Now that false positives have been eliminated, it's now possible for the first time to grab a backtrace from software that has deadlocked. We know it's frozen because they are requesting a kill from the same workstation from which it was started the first time. In the case of Evolution when they try and kill a running Evolution instance, they now get this dialog. Once they select an option from the UI below, it finds the 'evolution' and 'evolution-data-server' process and grabs a backtrace and then closes them down. Whereas previously we only had backtraces of a crash, now we have backtraces of deadlocks. This will allow me to look for locking trends and work with Novell in improving the software.
And if you are interested, here is the code that runs prior to starting the Evolution process. When they click on the Evolution icon it always first tries to raise Evolution to the front of the window stack with wmctrl. It then looks to see if it's already running. If it's already running, it determines if it's running on their current workstation or another workstation. If it's the current workstation it gives them the dialog to pick the last thing they did before deadlock; from this dialog they can obviously cancel and leave it alone. If they terminate Evolution, it finds their two processes and used gdb to non-interactivity dump a backtrace. If instead it's running on another workstation, it warns them that shutting down software is dangerous and then if they do so shuts it down and makes no attempt to create crash backtraces or deadlock backtraces...they are on their own.
I'm excited about the quality of data that we will be obtaining now, and this same code will be moved fully into LibreOffice once it's deployed next week. We're getting complete crash and deadlock backtraces from hundreds of users without them having to mess with bug-buddy; everything is fully automated.