Hi Jim, On Thu, 24 Sep 2009 13:31:53 -0400 you wrote:
> I am trying to create a pretty simple gtkmm application. The purpose > of the application is to display the status of an attached device and > to also send commands to the device to control it. The device is > connected to the computer via a serial port and abstracted by a > library API that I also wrote. My gtkmm application is designed to > poll the device for various status via one function that gets called > every 100 ms via a TimeoutSource. That's not very different from an application I'm developing. <snip> > The weird part is that this "loop" of calling the updateEMSStatus() > function via the TimeoutSource hangs randomly. It sometimes will hang > after one cycle through (meaning through every status get request that > fires in 1 second, 2 seconds, 5 seconds, etc)), and sometimes it'll do > several cycles through with the timer returning hundreds of times. I seem to recall having similar problems early on, but I can't remember the details. > It > doesn't seem to get stuck in any of my functions, it seems to be the > Glib event loop that is getting stuck because my GUI becomes > completely unresponsive. Any thoughts? Well one thought is that that is an unsafe deduction. The glib event loop is single-threaded and needs everything it calls to return in a timely manner. If one of your functions hangs, whether a command sender or a callback, the result will be to lock up the glib event loop. > Am I not using the Idlesource > in a proper manner? Possibly, but your code snippet didn't look wrong. > Is this a resource leak somehow? Unlikely - it's too quick > How would I go > about debugging where in the Glib event loop it might be hanging at? > With a debugger? Or possibly by scattering a few "entering this", "leaving that" debug messages around. How are you handling the returned serial data? Are you polling? Calling select? Using read? Using a separate thread? Relying on glib via a Glib::IOChannel (which is the method I use)? Rob _______________________________________________ gtkmm-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtkmm-list
