Robert Osfield schrieb:
On 6/8/07, Stephan Huber <[EMAIL PROTECTED]> wrote:
Cole, Charles E. (LARC-B702)[GENEX SYSTEMS] schrieb:
> b. Starting the viewer with the
> "--CullThreadPerCameraDrawThreadPerContext" option always locked up the
> application.
I can confirm this lockup on startup (similar to the lockup on Mac OS X)
It's unrelated to the shown model. I used "osgcamera -2 -c cow.osg" for
my testing.


Hardware: Pentium 4, Geforce 6600, Windows XP, one screen.

I don't have any light to shed on this, but an extra data point,

  osgcamera -2 -c cow.osg

Works fine on my Athlon64 X2 with 2 x Geforce 7800GT.  App starts and
exits cleanly.
doesn't work here on a MacBookPro with ATI1600, Windows XP, single monitor.

Here are some stack traces as requested:

the main-thread:

ntdll.dll!7c91eb94() [Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für ntdll.dll] ntdll.dll!7c91e9c0() kernel32.dll!7c8025cb() ntdll.dll!7c92901b() kernel32.dll!7c802532() > OpenThreadsd.dll!OpenThreads::cooperativeWait(void * waitHandle=0x000006fc, unsigned long timeout=4294967295) Zeile 53 + 0x10 Bytes C++ OpenThreadsd.dll!OpenThreads::Win32ConditionPrivateData::wait(OpenThreads::Mutex & external_mutex={...}, long timeout_ms=-1) Zeile 107 + 0x1d Bytes C++ OpenThreadsd.dll!OpenThreads::Condition::wait(OpenThreads::Mutex * mutex=0x0254cf60) Zeile 63 C++ osgViewerd.dll!osgViewer::EndOfDynamicDrawBlock::block() Zeile 740 + 0x1a Bytes C++ osgViewerd.dll!osgViewer::Viewer::renderingTraversals() Zeile 2255 C++ osgViewerd.dll!osgViewer::Viewer::frame(double simulationTime=1.7976931348623157e+308) Zeile 1741 + 0xf Bytes C++ osgcamerad.exe!main(int argc=1, char * * argv=0x024c7848) Zeile 316 + 0x1a Bytes C++
    osgcamerad.exe!__tmainCRTStartup()  Zeile 586 + 0x19 Bytes    C
    osgcamerad.exe!mainCRTStartup()  Zeile 403    C
kernel32.dll!7c816fd7()
there are *five* threads with the following stack trace:

msvcp80d.dll!_Mtxunlock(_RTL_CRITICAL_SECTION * _Mtx=0x00000002) Zeile 54 C msvcp80d.dll!std::_Container_base::_Orphan_all() Zeile 200 + 0x8 Bytes C++ 00000698() msvcp80d.dll!_Mtxlock(_RTL_CRITICAL_SECTION * _Mtx=0x10573230) Zeile 45 C msvcp80d.dll!_Mtxunlock(_RTL_CRITICAL_SECTION * _Mtx=0x00000002) Zeile 54 C msvcp80d.dll!std::_Container_base::_Orphan_all() Zeile 200 + 0x8 Bytes C++
    00000698()
    (similar output as above)

and there are *six* threads with the following stack trace:

ntdll.dll!7c91eb94() [Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für ntdll.dll] ntdll.dll!7c91e9c0() ntdll.dll!7c92901b() atioglxx.dll!69347453() ntdll.dll!7c91104b() > OpenThreadsd.dll!OpenThreads::Mutex::lock() Zeile 112 + 0xc Bytes C++ osgViewerd.dll!OpenThreads::ScopedLock<OpenThreads::Mutex>::ScopedLock<OpenThreads::Mutex>(OpenThreads::Mutex & m={...}) Zeile 31 + 0x2a Bytes C++ osgViewerd.dll!ViewerDoubleBufferedRenderingOperation::draw() Zeile 369 + 0x1c Bytes C++ osgViewerd.dll!ViewerDoubleBufferedRenderingOperation::operator()(osg::Object * object=0x024c9910) Zeile 559 C++ osgd.dll!osg::GraphicsContext::runOperations() Zeile 428 + 0x24 Bytes C++ osgViewerd.dll!ViewerRunOperations::operator()(osg::Object * object=0x024c9910) Zeile 1022 + 0xb Bytes C++
    osgd.dll!osg::OperationsThread::run()  Zeile 290 + 0x32 Bytes    C++
OpenThreadsd.dll!OpenThreads::ThreadPrivateActions::StartThread(void * data=0x0254e318) Zeile 105 + 0xf Bytes C++ kernel32.dll!7c80b683() msvcp80d.dll!_Mtxlock(_RTL_CRITICAL_SECTION * _Mtx=0x0254e318) Zeile 45 C msvcp80d.dll!_Mtxunlock(_RTL_CRITICAL_SECTION * _Mtx=0x7ffd8000) Zeile 54 C

If I understand the threading mechanism of CullThreadPerCameraDrawThreadPerContext then I should see 13 threads working, 1 main thread, 6 cull threads and 6 draw-threads. So one cull-thread is missing, is this correct?

Stephan


_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to