Hi Robert, what seems strange to me is that I add other event handler like for example a custom stats handler or a osgGA::StateSetManipulator wich are derived from the same class as the LODScaleHandler (ie: osgGA::GUIEventHandler). And with those 2 others event handler everything is working fine, it only crashes if I add the Lod handler.
I agree with you that this class is not very complicated but I do not understand why this one fails to unref. I try to track down the bug but I'm not sure it's on my application side, I'm unable to find the difference between a simple LODScaleHandler and a simple StatsHandler for example. Kind regards, 2008/6/23 Robert Osfield <[EMAIL PROTECTED]>: > Hi Alex, > > The LODScaleHandler looks prefectly correct, and given how simple this > event handler is I very much doubt the the problems stems from here. > > Could something else be corrupting the pointer? Could it be that you > are deleting parts of the viewer while other threads are still using > it? > > Robert. > > On Mon, Jun 23, 2008 at 2:30 PM, amalric alexandre > <[EMAIL PROTECTED]> wrote: > > Hi osg-users, > > > > I've noticed something strange in my app, I have a composite viewer with > > multiple view that I can add or remove at run-time. When I do not use a > > LODScaleHandler everything works fine when I remove my views from > composite > > viewer. > > > > But when I use a LODScaleHandler as : > > rpView->addEventHandler(new osgViewer::LODScaleHandler()); > > > > My application crashes when I remove a view from composite viewer with > > current stack: > > > >> osg38-osgd.dll!osg::Referenced::unref() Ligne 155 + 0x23 octets C++ > > > osg38-osgViewerd.dll!osg::ref_ptr<osgGA::GUIEventHandler>::~ref_ptr<osgGA::GUIEventHandler>() > > Ligne 30 + 0x33 octets C++ > > > osg38-osgViewerd.dll!std::_List_nod<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> >::_Node::~_Node() + 0x19 octets C++ > > > osg38-osgViewerd.dll!std::_List_nod<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> >::_Node::`scalar deleting destructor'() + 0x16 octets C++ > > > osg38-osgViewerd.dll!std::_Destroy<std::_List_nod<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> > > >>::_Node>(std::_List_nod<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> >::_Node * _Ptr=0x032ef1c8) Ligne 61 C++ > > > osg38-osgViewerd.dll!std::allocator<std::_List_nod<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> > > >>::_Node>::destroy(std::_List_nod<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> >::_Node * _Ptr=0x032ef1c8) Ligne 161 + 0x9 octets C++ > > > osg38-osgViewerd.dll!std::list<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> >::clear() Ligne 827 C++ > > > osg38-osgViewerd.dll!std::list<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> >::_Tidy() Ligne 1185 C++ > > > osg38-osgViewerd.dll!std::list<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> > > >>::~list<osg::ref_ptr<osgGA::GUIEventHandler>,std::allocator<osg::ref_ptr<osgGA::GUIEventHandler> > >> >() Ligne 516 C++ > > osg38-osgViewerd.dll!osgViewer::View::~View() Ligne 170 + 0x2d octets > C++ > > osg38-osgViewerd.dll!osgViewer::View::`vbase destructor'() + 0x17 > > octets C++ > > Px-Viewer.exe!osgViewer::View::`scalar deleting destructor'() + 0x2e > > octets C++ > > osg38-osgd.dll!osg::Referenced::unref() Ligne 155 + 0x23 octets C++ > > > osg38-osgViewerd.dll!osg::ref_ptr<osgViewer::View>::~ref_ptr<osgViewer::View>() > > Ligne 30 + 0x33 octets C++ > > osg38-osgViewerd.dll!osg::ref_ptr<osgViewer::View>::`scalar deleting > > destructor'() + 0x16 octets C++ > > osg38-osgViewerd.dll!std::_Destroy<osg::ref_ptr<osgViewer::View> > >>(osg::ref_ptr<osgViewer::View> * _Ptr=0x032d47f8) Ligne 61 C++ > > osg38-osgViewerd.dll!std::allocator<osg::ref_ptr<osgViewer::View> > >>::destroy(osg::ref_ptr<osgViewer::View> * _Ptr=0x032d47f8) Ligne 161 + > 0x9 > > octets C++ > > > osg38-osgViewerd.dll!std::_Destroy_range<osg::ref_ptr<osgViewer::View>,std::allocator<osg::ref_ptr<osgViewer::View> > >> >(osg::ref_ptr<osgViewer::View> * _First=0x032d47f8, > > osg::ref_ptr<osgViewer::View> * _Last=0x032d47fc, > > std::allocator<osg::ref_ptr<osgViewer::View> > & _Al={...}, > > std::_Nonscalar_ptr_iterator_tag __formal={...}) Ligne 235 + 0xc octets > C++ > > > osg38-osgViewerd.dll!std::_Destroy_range<osg::ref_ptr<osgViewer::View>,std::allocator<osg::ref_ptr<osgViewer::View> > >> >(osg::ref_ptr<osgViewer::View> * _First=0x032d47f8, > > osg::ref_ptr<osgViewer::View> * _Last=0x032d47fc, > > std::allocator<osg::ref_ptr<osgViewer::View> > & _Al={...}) Ligne 226 + > > 0x28 octets C++ > > > osg38-osgViewerd.dll!std::vector<osg::ref_ptr<osgViewer::View>,std::allocator<osg::ref_ptr<osgViewer::View> > >> >::_Destroy(osg::ref_ptr<osgViewer::View> * _First=0x032d47f8, > > osg::ref_ptr<osgViewer::View> * _Last=0x032d47fc) Ligne 1083 + 0x14 > > octets C++ > > > osg38-osgViewerd.dll!std::vector<osg::ref_ptr<osgViewer::View>,std::allocator<osg::ref_ptr<osgViewer::View> > >> > > >>::erase(std::_Vector_iterator<osg::ref_ptr<osgViewer::View>,std::allocator<osg::ref_ptr<osgViewer::View> > >> > _Where={_ptr=0x032cee88 }) Ligne 989 C++ > > > osg38-osgViewerd.dll!osgViewer::CompositeViewer::removeView(osgViewer::View > > * view=0x032cee88) Ligne 147 + 0x23 octets C++ > > > > > > -- > > Alexandre AMALRIC Ingénieur R&D > > =================================== > > PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille > > http://www.pixxim.fr > > > > > > > > > > _______________________________________________ > > osg-users mailing list > > osg-users@lists.openscenegraph.org > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > -- Alexandre AMALRIC Ingénieur R&D =================================== PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille http://www.pixxim.fr
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org