Hi Mike,

I'm aware of this threading problem, and unfortunately haven't had the
time to solve it yet - it'll require some extra synchronization
support built into osgViewer/osgGA/core to help prevent changes to
StateAttribute/StateSet whilest rendering is still under way.

Robert.

On Jan 22, 2008 9:23 PM, Mike Weiblen <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I've noticed that using the 't' key to toggle texturing in osgviewer may
> sometimes not work, or cause a crash.  The errant behavior is somewhat
> unreliable to reproduce.
>
> Repros:
>
> osgviewerd --image lz.rgb
> pressing 't' once disabled texturing, but further presses may not
> reenable it.  After hitting 't' many times (<20), app crashes per stack
> trace below.
>
> osgviewerd cow.osg
> pressing 't' will sometimes have an effect, sometimes not; have not yet
> been able to make this crash tho.
>
> I haven't explored osgviewer's other state-toggling keypresses.
>
> WinXP SP2, VS8 SP1, Debug build of today's OSG SVN @ r7833
>
> Cheers
> -- mew
>
>
>
> ---------------------------
> Microsoft Visual C++ Debug Library
> ---------------------------
> Debug Assertion Failed!
>
> Program: ...
> File: C:\Program Files\Microsoft Visual Studio 8\VC\include\xtree
> Line: 245
>
> Expression: map/set iterator not dereferencable
>
>
>
>
>
>         msvcp80d.dll!std::_Debug_message(const wchar_t *
> message=0x0115d3b8, const wchar_t * file=0x0115a360, unsigned int
> line=245)  Line 24      C++
>         osg29-osgd.dll!std::_Tree<std::_Tmap_traits<unsigned
> int,unsigned int,std::less<unsigned
> int>,std::allocator<std::pair<unsigned int const ,unsigned int> >,0>
> >::const_iterator::operator*()  Line 245 + 0x17 bytes   C++
>         osg29-osgd.dll!std::_Tree<std::_Tmap_traits<unsigned
> int,unsigned int,std::less<unsigned
> int>,std::allocator<std::pair<unsigned int const ,unsigned int> >,0>
> >::const_iterator::operator->()  Line 259       C++
>         osg29-osgd.dll!osg::State::pushModeList(std::map<unsigned
> int,osg::State::ModeStack,std::less<unsigned
> int>,std::allocator<std::pair<unsigned int const ,osg::State::ModeStack>
> > > & modeMap=[5]((3552,{valid=true changed=false
> last_applied_value=false ...}),(3553,{valid=true changed=false
> last_applied_value=false ...}),(32879,{valid=true changed=false
> last_applied_value=false ...}),(34037,{valid=true changed=false
> last_applied_value=false ...}),(34067,{valid=true changed=false
> last_applied_value=false ...})), const std::map<unsigned int,unsigned
> int,std::less<unsigned int>,std::allocator<std::pair<unsigned int const
> ,unsigned int> > > & modeList=[0]())  Line 1329 + 0x1a bytes    C++
>         osg29-osgd.dll!osg::State::pushStateSet(const osg::StateSet *
> dstate=0x01fba3e8)  Line 210    C++
> >
> osg29-osgUtild.dll!osgUtil::StateGraph::moveStateGraph(osg::State &
> state={...}, osgUtil::StateGraph * sg_curr=0x00000000,
> osgUtil::StateGraph * sg_new=0x00000000)  Line 221 + 0x20 bytes C++
>         osg29-osgUtild.dll!osgUtil::RenderLeaf::render(osg::RenderInfo &
> renderInfo={...}, osgUtil::RenderLeaf * previous=0x00000000)  Line 69 +
> 0x15 bytes      C++
>
> osg29-osgUtild.dll!osgUtil::RenderBin::drawImplementation(osg::RenderInf
> o & renderInfo={...}, osgUtil::RenderLeaf * & previous=0x00000000)  Line
> 428 + 0x19 bytes        C++
>
> osg29-osgUtild.dll!osgUtil::RenderStage::drawImplementation(osg::RenderI
> nfo & renderInfo={...}, osgUtil::RenderLeaf * & previous=0x00000000)
> Line 1053       C++
>         osg29-osgUtild.dll!osgUtil::RenderBin::draw(osg::RenderInfo &
> renderInfo={...}, osgUtil::RenderLeaf * & previous=0x00000000)  Line 373
> + 0x17 bytes    C++
>
> osg29-osgUtild.dll!osgUtil::RenderStage::drawInner(osg::RenderInfo &
> renderInfo={...}, osgUtil::RenderLeaf * & previous=0x00000000, bool &
> doCopyTexture=false)  Line 722  C++
>         osg29-osgUtild.dll!osgUtil::RenderStage::draw(osg::RenderInfo &
> renderInfo={...}, osgUtil::RenderLeaf * & previous=0x00000000)  Line 913
> + 0x1b bytes    C++
>         osg29-osgUtild.dll!osgUtil::SceneView::draw()  Line 1435 + 0x34
> bytes   C++
>         osg29-osgViewerd.dll!osgViewer::Renderer::draw()  Line 382 + 0xf
> bytes   C++
>
> osg29-osgViewerd.dll!osgViewer::Renderer::operator()(osg::GraphicsContex
> t * context=0x01fce1b0)  Line 573       C++
>         osg29-osgd.dll!osg::GraphicsContext::runOperations()  Line 694 +
> 0x33 bytes      C++
>
> osg29-osgd.dll!osg::RunOperations::operator()(osg::GraphicsContext *
> context=0x01fce1b0)  Line 134   C++
>         osg29-osgd.dll!osg::GraphicsOperation::operator()(osg::Object *
> object=0x01fce1b0)  Line 50 + 0x19 bytes        C++
>         osg29-osgd.dll!osg::OperationThread::run()  Line 413 + 0x26
> bytes   C++
>         osg29-osgd.dll!osg::GraphicsThread::run()  Line 40      C++
>
> ot9-OpenThreadsd.dll!OpenThreads::ThreadPrivateActions::StartThread(void
> * data=0x01fde780)  Line 112 + 0xf bytes        C++
>         msvcr80d.dll!_callthreadstartex()  Line 348 + 0xf bytes C
>         msvcr80d.dll!_threadstartex(void * ptd=0x01fdf360)  Line 331
> C
>         kernel32.dll!7c80b683()
>         [Frames below may be incorrect and/or missing, no symbols loaded
> for kernel32.dll]
> _______________________________________________
> 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

Reply via email to