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/