I ran into a crash caused (apprently) by OpenThreads (pthread implementation). If you create a new thread, and then immediately destroy it, it is possible to delete the thread before it has been flagged as "running". Thus, whoever in osgViewer is waiting on the thread to close ends up deleting the thread, never realizing that it has already been started (resulting in a crash).
The OpenThread source (see Thread::~Thread() in Pthread.c++) suggests that even attempting to delete a thread while it's running is an error. But it, too, uses the "isRunning" flag as its signal that the thread is either running or not, so it doesn't even notice the error when the thread gets destroyed. isRunning is not actually a correct indicator of whether the thread is running, as presently implemented. I temporarily solved this by adding: pd->isRunning = true; just before pthread_create() in Thread::start(). This solves my problem, but it should probably be looked at / solved by somebody more familiar with the code. Modifying asynchronous code you didn't write is a bad bad feeling... =( This is in the OpenSceneGraph-2.1.11 SVN source. Thanks all, AC _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

