Hi Brad, The new scene stats code isn't thread safe unfortunately. The original frame and update/cull/draw GPU stats should be fine though.
Robert. On Wed, Jan 14, 2009 at 5:34 PM, Brad Huber <[email protected]> wrote: > While using the unmodified stats handler in OSG I have notice a fairly > consistent debug assertion on my Windows machine. The assertion has to do > with stl vectors and occurs when I have the stat handler showing the number > of vertices rendered. This is the assertion: > > > > > > Here is the call stack: > >> msvcp80d.dll!std::_Debug_message(const wchar_t * >> message=0x013c8c48, const wchar_t * file=0x013c75b8, unsigned int line=99) >> Line 24 C++ > > > osg53-osgTextd.dll!std::_Vector_const_iterator<osg::Vec3f,std::allocator<osg::Vec3f> >>::operator*() Line 99 + 0x14 bytes C++ > > > osg53-osgTextd.dll!std::vector<osg::Vec3f,std::allocator<osg::Vec3f> >>::front() Line 772 + 0x24 bytes C++ > > > osg53-osgTextd.dll!osgText::Text::accept(osg::PrimitiveFunctor & pf={...}) > Line 1438 + 0x14 bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderBin::getStats(osgUtil::Statistics & > stats={...}) Line 506 + 0x13 bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderBin::getStats(osgUtil::Statistics & > stats={...}) Line 538 + 0x1d bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderBin::getStats(osgUtil::Statistics & > stats={...}) Line 538 + 0x1d bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderStage::getStats(osgUtil::Statistics & > stats={...}) Line 1296 + 0xc bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderStage::getStats(osgUtil::Statistics & > stats={...}) Line 1290 + 0x1d bytes C++ > > > osg53-osgUtild.dll!osgUtil::SceneView::getStats(osgUtil::Statistics & > stats={...}) Line 1694 C++ > > > osg53-osgViewerd.dll!osgViewer::CameraSceneStatsTextDrawCallback::drawImplementation(osg::RenderInfo > & renderInfo={...}, const osg::Drawable * drawable=0x0767fb38) Line 355 + > 0x1e bytes C++ > > osg53-osgd.dll!osg::Drawable::draw(osg::RenderInfo & > renderInfo={...}) Line 896 + 0x27 bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderLeaf::render(osg::RenderInfo & > renderInfo={...}, osgUtil::RenderLeaf * previous=0x07696260) Line 60 + 0x19 > bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderBin::drawImplementation(osg::RenderInfo & > renderInfo={...}, osgUtil::RenderLeaf * & previous=0x07696260) Line 419 + > 0x19 bytes C++ > > osg53-osgUtild.dll!osgUtil::RenderBin::draw(osg::RenderInfo > & renderInfo={...}, osgUtil::RenderLeaf * & previous=0x07696260) Line 384 + > 0x17 bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderBin::drawImplementation(osg::RenderInfo & > renderInfo={...}, osgUtil::RenderLeaf * & previous=0x07696260) Line 469 + > 0x35 bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderStage::drawImplementation(osg::RenderInfo > & renderInfo={...}, osgUtil::RenderLeaf * & previous=0x07696260) Line > 1253 C++ > > osg53-osgUtild.dll!osgUtil::RenderBin::draw(osg::RenderInfo > & renderInfo={...}, osgUtil::RenderLeaf * & previous=0x07696260) Line 384 + > 0x17 bytes C++ > > > osg53-osgUtild.dll!osgUtil::RenderStage::drawInner(osg::RenderInfo & > renderInfo={...}, osgUtil::RenderLeaf * & previous=0x07696260, bool & > doCopyTexture=false) Line 848 C++ > > > osg53-osgUtild.dll!osgUtil::RenderStage::draw(osg::RenderInfo & > renderInfo={...}, osgUtil::RenderLeaf * & previous=0x07696260) Line 1108 + > 0x1b bytes C++ > > osg53-osgUtild.dll!osgUtil::SceneView::draw() Line 1504 + > 0x37 bytes C++ > > osg53-osgViewerd.dll!osgViewer::Renderer::cull_draw() Line > 545 + 0xf bytes C++ > > > osg53-osgViewerd.dll!osgViewer::Renderer::operator()(osg::GraphicsContext * > context=0x02e16b40) Line 646 + 0xf bytes C++ > > osg53-osgd.dll!osg::GraphicsContext::runOperations() Line > 688 + 0x33 bytes C++ > > > osg53-osgd.dll!osg::RunOperations::operator()(osg::GraphicsContext * > context=0x02e16b40) Line 135 C++ > > > osg53-osgd.dll!osg::GraphicsOperation::operator()(osg::Object * > object=0x02e16b40) Line 50 + 0x19 bytes C++ > > osg53-osgd.dll!osg::OperationThread::run() Line 413 + 0x26 > bytes C++ > > osg53-osgd.dll!osg::GraphicsThread::run() Line 40 > C++ > > > ot11-OpenThreadsd.dll!OpenThreads::ThreadPrivateActions::StartThread(void * > data=0x050383c8) Line 113 + 0xf bytes C++ > > msvcr80d.dll!_callthreadstartex() Line 348 + 0xf bytes C > > msvcr80d.dll!_threadstartex(void * ptd=0x0503b600) Line > 331 C > > kernel32.dll!7610e3f3() > > [Frames below may be incorrect and/or missing, no symbols > loaded for kernel32.dll] > > ntdll.dll!___rtluserthreadst...@8() + 0x23 bytes > > ntdll.dll!__rtluserthreadst...@8() + 0x1b bytes > > > > Has anyone seen this? Does anyone know why this is or what it relates to? > Solution? > > > > Thanks > > -Brad > > > > _______________________________________________ > 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

