Hi Jan, Thanks for the stack traces, this gives us much more of an idea what might be up. These are just standard blocks/mutexes so not directly related to OpenGL, and also by the same token unlikely to be related directly to the model being rendered.
The face that the hang happens in the same place for DrawThreadPerContext as well as CullThreadPerCameraDrawThreadPerContext is probably down to them being effectively the same thing when there is one one graphics camera. The nature of the lock suggests that the double buffering mechanism has got out of sequence in Renderer, if this just happened always on the first frame I'd suggest that this was an uninitialized variable problem, but the fact that it happens later suggests some else amiss in the mechanism. Since I can reproduce the problem CullThreadPerCameraDrawThreadPerContext on my quad core machine I will have a bash at fixing this and hope that the DrawThreadPerContext issue might drop out too, but first I 2.1.6 to do, some admin work, and some work for clients... Robert. On 8/19/07, Jan Ciger <[EMAIL PROTECTED]> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hello Robert, > > I have new information regarding the hangs. I have finally managed to > get my gdb to produce a meaningful backtrace when the viewer hangs and > this is the result. > > For DrawThreadPerContext, it is blocked at: > > Thread 1: > #0 0xb7f507f2 in _dl_sysinfo_int80 () at rtld.c:788 > #1 0xb7a83206 in pthread_cond_wait@@GLIBC_2.3.2 () from > /lib/i686/libpthread.so.0 > #2 0xb7ab50a8 in OpenThreads::Condition::wait (this=0x8128d88, > mutex=0x8128d80) at > /media/backup/osg/OpenSceneGraph/src/OpenThreads/pthreads/PThreadCondition.c++:130 > #3 0xb7b3ac91 in osgViewer::Viewer::renderingTraversals > (this=0xbfdb968c) at > /media/backup/osg/OpenSceneGraph/include/OpenThreads/Block:133 > #4 0xb7b3b9e3 in osgViewer::Viewer::frame (this=0xbfdb968c, > simulationTime=1.7976931348623157e+308) at > /media/backup/osg/OpenSceneGraph/src/osgViewer/Viewer.cpp:983 > #5 0xb7b3bb3a in osgViewer::Viewer::run (this=0xbfdb968c) at > /media/backup/osg/OpenSceneGraph/src/osgViewer/Viewer.cpp:195 > #6 0x0804b069 in main (argc=Cannot access memory at address 0x0 > ) at > /media/backup/osg/OpenSceneGraph/applications/osgviewer/osgviewer.cpp:148 > > Thread 2: > #0 0xb7f507f2 in _dl_sysinfo_int80 () at rtld.c:788 > #1 0xb7a8591e in __lll_mutex_lock_wait () from /lib/i686/libpthread.so.0 > #2 0xb7a8184e in _L_mutex_lock_80 () from /lib/i686/libpthread.so.0 > #3 0xb7a8139d in pthread_mutex_lock () from /lib/i686/libpthread.so.0 > #4 0xb7ab5273 in OpenThreads::Mutex::lock (this=0x8058f74) at > /media/backup/osg/OpenSceneGraph/src/OpenThreads/pthreads/PThreadMutex.c++:122 > #5 0xb7b1a52e in osgViewer::Renderer::draw (this=0x8058f20) at > /media/backup/osg/OpenSceneGraph/include/OpenThreads/ScopedLock:31 > #6 0xb7b1af58 in osgViewer::Renderer::operator() (this=0xfffffe00, > context=0x812dd70) at > /media/backup/osg/OpenSceneGraph/src/osgViewer/Renderer.cpp:548 > #7 0xb7e4d45f in osg::GraphicsContext::runOperations (this=0x812dd70) > at /media/backup/osg/OpenSceneGraph/src/osg/GraphicsContext.cpp:654 > #8 0xb7e538dd in osg::RunOperations::operator() (this=0x8129278, > context=0x812dd70) at > /media/backup/osg/OpenSceneGraph/src/osg/GraphicsThread.cpp:134 > #9 0xb7e53947 in osg::GraphicsOperation::operator() (this=0x8129278, > object=0x812dd70) at > /media/backup/osg/OpenSceneGraph/src/osg/GraphicsThread.cpp:50 > #10 0xb7e7c627 in osg::OperationThread::run (this=0x8128f78) at > /media/backup/osg/OpenSceneGraph/src/osg/OperationThread.cpp:413 > #11 0xb7e53a89 in osg::GraphicsThread::run (this=0x8128f78) at > /media/backup/osg/OpenSceneGraph/src/osg/GraphicsThread.cpp:38 > #12 0xb7ab47e4 in OpenThreads::ThreadPrivateActions::StartThread > (data=0x8128f88) at > /media/backup/osg/OpenSceneGraph/src/OpenThreads/pthreads/PThread.c++:158 > #13 0xb7a7f462 in start_thread () from /lib/i686/libpthread.so.0 > #14 0xb769c82e in clone () from /lib/i686/libc.so.6 > > > For CullThreaPerCameraDrawThreadPerContext I get the hang in: > Thread 1: > #0 0xb7f807f2 in _dl_sysinfo_int80 () at rtld.c:788 > #1 0xb7ab3206 in pthread_cond_wait@@GLIBC_2.3.2 () from > /lib/i686/libpthread.so.0 > #2 0xb7ae50a8 in OpenThreads::Condition::wait (this=0x8128d88, > mutex=0x8128d80) at > /media/backup/osg/OpenSceneGraph/src/OpenThreads/pthreads/PThreadCondition.c++:130 > #3 0xb7b6ac91 in osgViewer::Viewer::renderingTraversals > (this=0xbfc66d0c) at > /media/backup/osg/OpenSceneGraph/include/OpenThreads/Block:133 > #4 0xb7b6b9e3 in osgViewer::Viewer::frame (this=0xbfc66d0c, > simulationTime=1.7976931348623157e+308) at > /media/backup/osg/OpenSceneGraph/src/osgViewer/Viewer.cpp:983 > #5 0xb7b6bb3a in osgViewer::Viewer::run (this=0xbfc66d0c) at > /media/backup/osg/OpenSceneGraph/src/osgViewer/Viewer.cpp:195 > #6 0x0804b069 in main (argc=Cannot access memory at address 0x0 > ) at > /media/backup/osg/OpenSceneGraph/applications/osgviewer/osgviewer.cpp:148 > > Thread 2: > #0 0xb7f807f2 in _dl_sysinfo_int80 () at rtld.c:788 > #1 0xb7ab591e in __lll_mutex_lock_wait () from /lib/i686/libpthread.so.0 > #2 0xb7ab184e in _L_mutex_lock_80 () from /lib/i686/libpthread.so.0 > #3 0xb7ab139d in pthread_mutex_lock () from /lib/i686/libpthread.so.0 > #4 0xb7ae5273 in OpenThreads::Mutex::lock (this=0x8058f6c) at > /media/backup/osg/OpenSceneGraph/src/OpenThreads/pthreads/PThreadMutex.c++:122 > #5 0xb7b4a52e in osgViewer::Renderer::draw (this=0x8058f20) at > /media/backup/osg/OpenSceneGraph/include/OpenThreads/ScopedLock:31 > #6 0xb7b4af58 in osgViewer::Renderer::operator() (this=0xfffffe00, > context=0x812dd70) at > /media/backup/osg/OpenSceneGraph/src/osgViewer/Renderer.cpp:548 > #7 0xb7e7d45f in osg::GraphicsContext::runOperations (this=0x812dd70) > at /media/backup/osg/OpenSceneGraph/src/osg/GraphicsContext.cpp:654 > #8 0xb7e838dd in osg::RunOperations::operator() (this=0x8129278, > context=0x812dd70) at > /media/backup/osg/OpenSceneGraph/src/osg/GraphicsThread.cpp:134 > #9 0xb7e83947 in osg::GraphicsOperation::operator() (this=0x8129278, > object=0x812dd70) at > /media/backup/osg/OpenSceneGraph/src/osg/GraphicsThread.cpp:50 > #10 0xb7eac627 in osg::OperationThread::run (this=0x8128f78) at > /media/backup/osg/OpenSceneGraph/src/osg/OperationThread.cpp:413 > #11 0xb7e83a89 in osg::GraphicsThread::run (this=0x8128f78) at > /media/backup/osg/OpenSceneGraph/src/osg/GraphicsThread.cpp:38 > #12 0xb7ae47e4 in OpenThreads::ThreadPrivateActions::StartThread > (data=0x8128f88) at > /media/backup/osg/OpenSceneGraph/src/OpenThreads/pthreads/PThread.c++:158 > #13 0xb7aaf462 in start_thread () from /lib/i686/libpthread.so.0 > #14 0xb76cc82e in clone () from /lib/i686/libc.so.6 > > So it seems to be the same issue for both. > > Regards, > > Jan > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.7 (GNU/Linux) > Comment: Using GnuPG with Mandriva - http://enigmail.mozdev.org > > iD8DBQFGyMMon11XseNj94gRAj8GAJ9c30GqIbHp3xKXynnWs4Thj9wz3wCePL2Z > NYncrk4yO++fQYgRKKommtQ= > =9RcM > -----END PGP SIGNATURE----- > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

