Gnats XXXX -- Solaris GUI Ghosting / Non-thread safe event processing
Subject: | Re: Information about RiverWare behavior | |
---|---|---|
Date: | Wed, 06 Jun 2007 11:43:30 -0600 | |
From: | Nancy Hall <halln@colorado.edu> | |
Organization: | Center for Advanced Decision Support for Water and Environmental Systems | |
CC: | riverware@maelstrom.Colorado.EDU |
Hmm, we have a multi-threaded RiverWare, and it's not been written to
be thread-safe. Doing I/O, malloc, or anything but very lightweight
work (that doesn't descend to any run-time libraries) in a signal
handler is a problem in a multi-threaded process.
After talking with Bill about this, I'm thinking that in order to have
any confidence in a RiverWare running with multiple threads (namely,
with the Oracle stuff), we have to:
1) fix every signal handler in RiverWare (including seeing what
galaxy and Qt do with signals and see how they pick up
async events like keystrokes)
2) get rid of unsafe sleep mechanisms (usleep, any others)
3) use the thread-safe QT library only
4) probably have to get rid of galaxy, because it's a good bet that
it's not thread-safe
5) get rid of all exceptions in RiverWare, and spend some time
determining what will happen with the STL exceptions on the various
vendors' thread packages (Solaris, whatever Linux we use, Windows).
-nancy
Bill Oakley wrote ... CLICK HERE