Hi Stephan, Thanks for the efforts in tracking this down. Its a shame I haven't seen problems under Linux, its also a shame I'm need deep in other stuff right now so can only visit this issue briefly.
It looks like we either need to restructure the way the cancel is called to get them to graphics threads to reliquish the locks on the graphics operations, or have the cancel implementation itself try a native thread cancel, rather than the negotiated thread cancel that is relief upon right now. The native thread cancel should be able to release threads sitting on a mutex. Robert. On 7/27/07, Stephan Maximilian Huber <[EMAIL PROTECTED]> wrote: > Hi Robert, > > Robert Osfield schrieb: > > Hi Stephan, > > > > On 7/25/07, Stephan Maximilian Huber <[EMAIL PROTECTED]> wrote: > > > >> To bring an old issue again on top: the shiny new threading models for > >> osg do not work on OS X. I reported this issue one or two months ago, > >> but it seems I am the only one who experience these issues or i am the > >> only one who is trying to use a recent version of OSG on OSX. > >> > > > > Martin and I tested multi-threading on his dual core G5 in the run up > > to 2.0, Martin will test again tomorrow when he get back to his > > machine. I have dual core Linux machine here which runs fine, and > > will build a quad core machine tomorrow once this is up I'll be able > > to hammer things even harder. > > > Perhaps the treading problems are only visible on the new intel macs. I > tested OpenSceneGraph on a 2 x CoreDuro Intel Xeon (Mac Pro) and on a > CoreDuo (MacBookPro) -- no difference, they both hang. > > I think to resolve these issues we'll need to pick one at a time and > > work through them as having all results in one email is rather hard to > > follow. > > Fine. I'll start with DrawPerContextThread: I am using the modified > osgcamera example from my last email for testing (osgcamera -d > dumptruck.osg) > > If I close one of the two windows, the app hangs, the app waits for the > cancelling of one of the rendering threads which does not happen, > because this thread is blocked by a mutex. (if I am correct on this) > Anyway, here's part of the console output: > > Uniform Adding parent > Uniform Adding parent > OpenGL extension '' is not supported. > Setting up osg::Camera::FRAME_BUFFER > OpenGL extension 'GL_EXT_texture_filter_anisotropic' is supported. > OpenGL extension 'GL_EXT_texture_compression_s3tc' is supported. > OpenGL extension 'GL_ARB_shadow' is supported. > OpenGL extension 'GL_ARB_shadow_ambient' is not supported. > OpenGL extension 'GL_APPLE_client_storage' is supported. > glGetString(GL_RENDERER)==NVIDIA GeForce 7300 GT OpenGL Engine > OpenGL extension '' is not supported. > OpenGL extension '' is not supported. > Setting up osg::Camera::FRAME_BUFFER > Setting up osg::Camera::FRAME_BUFFER > Cancelling OperationThread 0x1c4db20 isRunning()=0 > OperationThread::cancel() thread cancelled 0x1c4db20 isRunning()=0 > Cancelling OperationThread 0x1c4df00 isRunning()=0 > OperationThread::cancel() thread cancelled 0x1c4df00 isRunning()=0 > close(0x1)0x1c18b70 > Cancelling OperationThread 0x1c93e30 isRunning()=0x1 > Doing cancel 0x1c93e30 > Waiting for OperationThread to cancel 0x1c93e30 > Waiting for OperationThread to cancel 0x1c93e30 > Waiting for OperationThread to cancel 0x1c93e30 > Waiting for OperationThread to cancel 0x1c93e30 > > > > stack trace of the main-thread: > > #10 0x010b0775 in osg::OperationThread::cancel at OperationThread.cpp:313 > #11 0x010a250e in osg::GraphicsContext::setGraphicsThread at > GraphicsContext.cpp:505 > #12 0x010a49ee in osg::GraphicsContext::close at GraphicsContext.cpp:362 > #13 0x0021d1a4 in osgViewer::GraphicsWindowCarbon::checkEvents at > GraphicsWindowCarbon.cpp:1098 > #14 0x00216fba in osgViewer::Viewer::eventTraversal at Viewer.cpp:1894 > #15 0x002199b3 in osgViewer::Viewer::frame at Viewer.cpp:1815 > #16 0x00003f5d in main at osgcamera.cpp:124 > > > stack trace of rendering thread 1: > > #0 0x90024c67 in semaphore_wait_signal_trap > #1 0x90001922 in pthread_mutex_lock > #2 0x00013db1 in OpenThreads::Mutex::lock at PThreadMutex.c++:122 > #3 0x0022c2de in > OpenThreads::ScopedLock<OpenThreads::Mutex>::ScopedLock at ScopedLock:31 > #4 0x0024b002 in ViewerDoubleBufferedRenderingOperation::draw at > Viewer.cpp:391 > #5 0x0024b95e in ViewerDoubleBufferedRenderingOperation::operator() > at Viewer.cpp:597 > #6 0x010a2ff4 in osg::GraphicsContext::runOperations at > GraphicsContext.cpp:610 > #7 0x00243403 in ViewerRunOperations::operator() at Viewer.cpp:1071 > #8 0x010a5c3e in osg::GraphicsOperation::operator() at > GraphicsThread.cpp:50 > #9 0x010b1729 in osg::OperationThread::run at OperationThread.cpp:379 > #10 0x010a5bad in osg::GraphicsThread::run at GraphicsThread.cpp:38 > #11 0x000141b0 in OpenThreads::ThreadPrivateActions::StartThread at > PThread.c++:158 > > > stack trace of rendering thread 2: > > #0 0x90024c67 in semaphore_wait_signal_trap > #1 0x90001922 in pthread_mutex_lock > #2 0x00013db1 in OpenThreads::Mutex::lock at PThreadMutex.c++:122 > #3 0x0022c2de in > OpenThreads::ScopedLock<OpenThreads::Mutex>::ScopedLock at ScopedLock:31 > #4 0x0024b002 in ViewerDoubleBufferedRenderingOperation::draw at > Viewer.cpp:391 > #5 0x0024b95e in ViewerDoubleBufferedRenderingOperation::operator() > at Viewer.cpp:597 > #6 0x010a2ff4 in osg::GraphicsContext::runOperations at > GraphicsContext.cpp:610 > #7 0x00243403 in ViewerRunOperations::operator() at Viewer.cpp:1071 > #8 0x010a5c3e in osg::GraphicsOperation::operator() at > GraphicsThread.cpp:50 > #9 0x010b1729 in osg::OperationThread::run at OperationThread.cpp:379 > #10 0x010a5bad in osg::GraphicsThread::run at GraphicsThread.cpp:38 > #11 0x000141b0 in OpenThreads::ThreadPrivateActions::StartThread at > PThread.c++:158 > #12 0x900245c7 in _pthread_body > > > cheers, > Stephan > > > _______________________________________________ > 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

