|
我有一个OSG程序跑得好好的,但是偶尔会死掉,现象和邮件组上一个用户的提问一样,不知道大家有没有遇到过?貌似VC2008自身的Bug。
在多线程环境下,检查了可能的线程冲突,实在困惑。向大家请教这个问题。
http://lists.openscenegraph.org/ ... 08-June/012357.html
[osg-users] Random crash running with osg
Hi All,
Running my application, I get a random crash I cannot identify.
The error is : "vector<bool> iterator not dereferencable"
Bu I've no vector<bool> in my code, So I gess it is in osg where the crash
append.
Maybe I make something wrong in my code, but I've no idea where or what the
bug can be...
The application uses a lot of OpenThreads, that modify the scenegraph, but
they looks synchronized now...
Any idea ?
Thank you.
Regards,
Vincent.
Note :
Configuration : WinXP, osg 2.2 & 2.4
>
Stack trace on crash :
> msvcp80d.dll!std::_Debug_message(const wchar_t * message=0x103ed770,
> const wchar_t * file=0x1039b478, unsigned int line=1463) Ligne 23 C++
>
> osg35-osgd.dll!std::_Vb_reference<std::vector<bool,std::allocator<bool> >
> >::_Getptr() Ligne 1463 + 0x17 octets C++
>
> osg35-osgd.dll!std::_Vb_reference<std::vector<bool,std::allocator<bool> >
> >:perator bool() Ligne 1453 + 0x8 octets C++
>
> osg35-osgd.dll!std::_Vb_const_iterator<std::vector<bool,std::allocator<bool>
> > >::operator*() Ligne 1523 + 0x24 octets C++
> osg35-osgd.dll!std::vector<bool,std::allocator<bool>
> >::operator[](unsigned int _Off=1) Ligne 2010 + 0x41 octets C++
> osg35-osgd.dll!osg::Switch::computeBound() Ligne 198 + 0x12 octets
> C++
> osg35-osgd.dll!osg::Node::getBound() Ligne 268 + 0x13 octets C++
> osg35-osgd.dll!osg::Group::computeBound() Ligne 357 + 0x16 octets
> C++
> osg35-osgd.dll!osg::Node::getBound() Ligne 268 + 0x13 octets C++
> osg35-osgd.dll!osg::Group::computeBound() Ligne 357 + 0x16 octets
> C++
> osg35-osgd.dll!osg::Node::getBound() Ligne 268 + 0x13 octets C++
> osg35-osgd.dll!osg::Node::isCullingActive() Ligne 191 + 0x39
> octets C++
> osg35-osgd.dll!osg::CullStack::isCulled(const osg::Node & node={...})
> Ligne 109 + 0x8 octets C++
> osg35-osgUtild.dll!osgUtil::CullVisitor::apply(osg::Group &
> node={...}) Ligne 969 + 0x12 octets C++
> osg35-osgd.dll!osg::Group::accept(osg::NodeVisitor & nv={...}) Ligne
> 38 + 0x41 octets C++
> osg35-osgd.dll!osg::Group::traverse(osg::NodeVisitor & nv={...})
> Ligne 62 + 0x25 octets C++
> osg35-osgd.dll!osg::NodeVisitor::traverse(osg::Node & node={...})
> Ligne 181 + 0x1c octets C++
>
> osg35-osgUtild.dll!osgUtil::CullVisitor::handle_cull_callbacks_and_traverse(osg::Node
> & node={...}) Ligne 277 + 0xf octets C++
> osg35-osgUtild.dll!osgUtil::CullVisitor::apply(osg::Group &
> node={...}) Ligne 981 C++
> osg35-osgd.dll!osg::Group::accept(osg::NodeVisitor & nv={...}) Ligne
> 38 + 0x41 octets C++
> osg35-osgUtild.dll!osgUtil::SceneView::cullStage(const osg::Matrixd &
> projection={...}, const osg::Matrixd & modelview={...}, osgUtil::CullVisitor
> * cullVisitor=0x01fb46b8, osgUtil::StateGraph * rendergraph=0x01fb4220,
> osgUtil::RenderStage * renderStage=0x01fb42b8) Ligne 821 + 0x42 octets
> C++
> osg35-osgUtild.dll!osgUtil::SceneView::cull() Ligne 687 + 0x4e
> octets C++
> osg35-osgViewerd.dll!osgViewer::Renderer::cull() Ligne 285 + 0xf
> octets C++
> osg35-osgViewerd.dll!osgViewer::ViewerBase::renderingTraversals()
> Ligne 643 + 0x15 octets C++
> osg35-osgViewerd.dll!osgViewer::ViewerBase::frame(double
> simulationTime=1.7976931348623157e+308) Ligne 583 + 0xf octets C++
> 3DEM.exe!EM_Modules::run() Ligne 302 C++
> 3DEM.exe!EM_Modules::init(HWND__ * hWnd=0x00000000) Ligne 264 + 0xb
> octets C++
> 3DEM.exe!main(int argc=1, char * * argv=0x01f32940) Ligne 99 + 0xd
> octets C++
> 3DEM.exe!__tmainCRTStartup() Ligne 586 + 0x19 octets C
> 3DEM.exe!mainCRTStartup() Ligne 403 C
> kernel32.dll!7c816fd7()
> [Les frames ci-dessous sont peut-être incorrects et/ou manquants,
> aucun symbole chargé pour kernel32.dll]
>
[ 本帖最后由 kinsung 于 2009-1-19 22:39 编辑 ] |
|