[osg-users] crash in frame(); in the multithreading

Robert Osfield robert.osfield at gmail.com
Fri Jul 18 01:36:49 PDT 2008


Hi Xiadong,

If you are updating StateSet/StateAttribute or Drawables/Geometry in
your update then you should mark their DataVariance to DYNAMIC so that
the draw traversal knows not to release the current frame till they
are all done.

Robert.

2008/7/18 Wu Xiaodong <wuxiaodong82 at gmail.com>:
>
> Hi.
>
>           I begin a new thread for osg::Viewer()::frame();
>
>           I create a simple scene , then call osg::Viewer::frame() ; it all
> works well;
>
>           while I add some chilld-nodes to a group node, then it crashed in
> frame();
>
>          Is the error generated because of the multi-thread or something;
> what should I do when insert some new children to scene to avoid this kind
> of crash?
>
>                Thanks;
>
>  xiaodong.
>
>
>
> //the calling stack is as following
>>
>> osg33-osgd.dll!std::_Vector_const_iterator<osg::ref_ptr<osg::Node>,std::allocator<osg::ref_ptr<osg::Node>
>> > >::operator++()  Line 117 + 0x33 bytes    C++
>
> osg33-osgd.dll!std::_Vector_iterator<osg::ref_ptr<osg::Node>,std::allocator<osg::ref_ptr<osg::Node>
>> >::operator++()  Line 337    C++
>      osg33-osgd.dll!osg::Group::traverse(osg::NodeVisitor & nv={...})  Line
> 60 + 0x8 bytes    C++
>      osg33-osgd.dll!osg::NodeVisitor::traverse(osg::Node & node={...})  Line
> 181 + 0x1c bytes    C++
>
> osg33-osgUtild.dll!osgUtil::UpdateVisitor::handle_callbacks_and_traverse(osg::Node
> & node={...})  Line 84 + 0x25 bytes    C++
>      osg33-osgUtild.dll!osgUtil::UpdateVisitor::apply(osg::Group &
> node={...})  Line 54 + 0x1a bytes    C++
>      osg33-osgd.dll!osg::Group::accept(osg::NodeVisitor & nv={...})  Line 38
> + 0x41 bytes    C++
>      osg33-osgd.dll!osg::Group::traverse(osg::NodeVisitor & nv={...})  Line
> 62 + 0x25 bytes    C++
>      osg33-osgd.dll!osg::NodeVisitor::traverse(osg::Node & node={...})  Line
> 181 + 0x1c bytes    C++
>
> osg33-osgUtild.dll!osgUtil::UpdateVisitor::handle_callbacks_and_traverse(osg::Node
> & node={...})  Line 84 + 0x25 bytes    C++
>      osg33-osgUtild.dll!osgUtil::UpdateVisitor::apply(osg::Group &
> node={...})  Line 54 + 0x1a bytes    C++
>      osg33-osgd.dll!osg::Group::accept(osg::NodeVisitor & nv={...})  Line 38
> + 0x41 bytes    C++
>      osg33-osgViewerd.dll!osgViewer::Viewer::updateTraversal()  Line 837 +
> 0x32 bytes    C++
>      osg33-osgViewerd.dll!osgViewer::ViewerBase::frame(double
> simulationTime=1.7976931348623157e+308)  Line 582 + 0xf bytes    C++
>
> --
> Xiaodong Wu
> 吴晓东
> "'Xiao' means the time and the view when the sun rises and 'dong' means the
> east in Chinese"
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>


More information about the osg-users mailing list