Hello,

 

I have crash in my scene manager class with respect to shadow stages. I
do not see what is wrong with my code. 

 

What I have done:

 

SceneManager::ctor()

{

    _internalRoot = Node::create();

    _internalRoot->setCore(Group::create());

    _internalRoot->addChild(_cartesianNode);

    _internalRoot->addChild(_switchNode);

    ...

 

    _shadowStage = ShadowStage::create();

    _shadowStage->setMapSize(glMan.iShadowMapSize());

    _shadowStage->setShadowMode(mode);

    ...

    _internalRoot->setCore(_shadowStage);

}

 

SceneManager::dtor()

{

    _internalRoot->setCore(NULL);

    _shadowStage = NULL;                            <--- crash on second
scene manager destruction

}

 

My setup involves multiple SceneManager objects. On destruction of the
second one I got the crash with the following call stack.

 

OSGGroupD.dll!OSG::StageData::`vcall'{248}'()  + 0x3 bytes       C++

OSGGroupD.dll!boost::_mfi::mf3<void,OSG::StageData,OSG::FieldContainer *
__ptr64,unsigned __int64,unsigned int>::operator()(OSG::StageData *
p=0x0000000018789bb0, OSG::FieldContainer * a1=0x0000000011637b88,
unsigned __int64 a2=0, unsigned int a3=1)  Line 394          C++

OSGGroupD.dll!boost::_bi::list4<boost::_bi::value<OSG::StageData *
__ptr64>,boost::arg<1>,boost::arg<2>,boost::arg<3>
>::operator()<boost::_mfi::mf3<void,OSG::StageData,OSG::FieldContainer *
__ptr64,unsigned __int64,unsigned
int>,boost::_bi::list3<OSG::FieldContainer * __ptr64 & __ptr64,unsigned
__int64 & __ptr64,unsigned int & __ptr64> >(boost::_bi::type<void>
__formal={...}, boost::_mfi::mf3<void,OSG::StageData,OSG::FieldContainer
*,unsigned __int64,unsigned int> & f={...},
boost::_bi::list3<OSG::FieldContainer * &,unsigned __int64 &,unsigned
int &> & a={...}, boost::_bi::type<void> __formal={...})  Line 458
C++

OSGGroupD.dll!boost::_bi::bind_t<void,boost::_mfi::mf3<void,OSG::StageDa
ta,OSG::FieldContainer * __ptr64,unsigned __int64,unsigned
int>,boost::_bi::list4<boost::_bi::value<OSG::StageData *
__ptr64>,boost::arg<1>,boost::arg<2>,boost::arg<3> >
>::operator()<OSG::FieldContainer * __ptr64,unsigned __int64,unsigned
int>(OSG::FieldContainer * & a1=0x0000000011637b88, unsigned __int64 &
a2=0, unsigned int & a3=1)  Line 117               C++

OSGGroupD.dll!boost::detail::function::void_function_obj_invoker3<boost:
:_bi::bind_t<void,boost::_mfi::mf3<void,OSG::StageData,OSG::FieldContain
er * __ptr64,unsigned __int64,unsigned
int>,boost::_bi::list4<boost::_bi::value<OSG::StageData *
__ptr64>,boost::arg<1>,boost::arg<2>,boost::arg<3> >
>,void,OSG::FieldContainer * __ptr64,unsigned __int64,unsigned
int>::invoke(boost::detail::function::function_buffer &
function_obj_ptr={...}, OSG::FieldContainer * a0=0x0000000011637b88,
unsigned __int64 a1=0, unsigned int a2=1)  Line 154 C++

OSGBaseD.dll!boost::function3<void,OSG::FieldContainer *
__ptr64,unsigned __int64,unsigned int>::operator()(OSG::FieldContainer *
a0=0x0000000011637b88, unsigned __int64 a1=0, unsigned int a2=1)  Line
761                C++

OSGBaseD.dll!OSG::FieldContainer::callChangedFunctors(const unsigned
__int64 whichField=0, unsigned int origin=1)  Line 83           C++

OSGBaseD.dll!OSG::FieldContainer::resolveLinks()  Line 350     C++

OSGBaseD.dll!OSG::AttachmentContainer::resolveLinks()  Line 482      C++

OSGBaseD.dll!OSG::NodeCoreBase::resolveLinks()  Line 425    C++

OSGSystemD.dll!OSG::GroupBase::resolveLinks()  Line 377       C++

OSGGroupD.dll!OSG::StageBase::resolveLinks()  Line 552           C++

OSGEffectGroupsD.dll!OSG::ShadowStageBase::resolveLinks()  Line 1966
C++

OSGBaseD.dll!OSG::FieldContainer::subReferenceUnrecorded()  Line 458
C++

OSGBaseD.dll!OSG::UnrecordedRefCountPolicy::subRef(OSG::FieldContainer *
const pObject=0x0000000011637b88)  Line 113         C++

OSGBaseD.dll!OSG::ChildAccessHandler<OSG::UnrecordedRefCountPolicy>::onR
eplace(OSG::PointerSFieldBase * const pSField=0x00000000114f93c8,
OSG::FieldContainer * const pOldObj=0x0000000011637b88,
OSG::FieldContainer * const pNewObj=0x0000000000000000)  Line 172
C++

OSGBaseD.dll!OSG::PointerSFieldCommon<OSG::ChildAccessHandler<OSG::Unrec
ordedRefCountPolicy>,1>::ptrStoreSet(OSG::FieldContainer * const
pNewObj=0x0000000000000000)  Line 109          C++

OSGBaseD.dll!OSG::ChildPointerSField<OSG::NodeCore *
__ptr64,OSG::UnrecordedRefCountPolicy,1>::setValue(OSG::NodeCore * const
value=0x0000000000000000)  Line 110                C++

OSGBaseD.dll!OSG::Node::resolveLinks()  Line 1010      C++

OSGBaseD.dll!OSG::FieldContainer::subReferenceRecorded()  Line 376
C++

OSGBaseD.dll!OSG::RecordedRefCountPolicy::subRef(OSG::FieldContainer *
const pObject=0x00000000114f92b8)  Line 56                C++

RenderEngineD.dll!OSG::RecordedRefCountPolicy::setRefd<OSG::Node,OSG::No
de>(OSG::Node * & pDest=0x00000000114f92b8, OSG::Node *
pSource=0x0000000000000000)  Line 65       C++

RenderEngineD.dll!OSG::RefCountPtr<OSG::Node,OSG::RecordedRefCountPolicy
>::operator=(OSG::Node * const objectPtr=0x0000000000000000)  Line 135
C++

RenderEngineD.dll!RenderEngine::graphic::SceneManager::~SceneManager()
Line 157            C++

 

Any idea what might be wrong with my code or setup? Do I have a
fundamental design flaw?

 

I did some debugging, but I'm lost in the boost function code. 

 

Any help would be very welcome

 

Best,

Johannes

 

 

 

 


------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to