From: Kris Hagel (hagel@comp.tamu.edu)
Date: Thu Apr 03 2003 - 09:54:14 EST
Hello, In an attempt (shot in the dark) to alleviate the crashes of the SuperMon software when massive clicking is going on, I have changed the way the analysis manager loops over events. Previously the analysis manager looped over the events calling gSystem->ProcessEvents() after every event or buffer or some set of events (I forget exactly). Clicking on a spectrum to display it or double clicking to make a popup window or closing a canvas was executed inside these process events. Given that the crashes are somewhat random, my suspicion is that we get into a problem with timing between the x events and the rest of the program. The change made was to make the analysis loop a separate thread which only analyses the data. The main program will only deal with the button clicks and hopefully that will all happen independently of each other. The analysis loop thread does all of the writing (ie incrementing spectra) and the main thread only reads (ie displays histograms) The only place where there could be competition for writing data would be on clears while the analysis loop was in progress. This appears not to be an issue, but the possibility is non-zero that it could come back to bite. In that case locks would have to be implemented and I am not up to that right now. I implemented this and tested it reading real data files (run 8615) and it didn't crash when I made lots of popup windows. That means it is at least working to the level it did. The bad news is that it didn't crash very often for me anyway, so I have a hard time telling if I made an improvement. In the event (hopefully unlikely) that this makes things worse after it is installed in the operator account, I left a hook in to cause the behavior to be the same as the old. It is simply uncommenting the statement SetAnalysisLoopMode(kModeNormal) in the BrSuperMonitor constructor in case anyone is interested. I have not installed this in the operator account yet as I will wait for some coment. Regards Kris
This archive was generated by hypermail 2.1.5 : Thu Apr 03 2003 - 09:55:20 EST