Hi,
sorry for the silence, I'll have a detailed look tomorrow (as I did
the patch that broke things). Was offline for a while, just back.
kind regards
gerrit
On Mon, 2013-08-26 at 11:38 +0200, Johannes wrote:
> Hello Carsten and Gerrit,
>
> I have not solved this issue yet but I have a little peace of extra
> information.
>
> The crash happens in
>
> void ShaderValueVariable::changed(ConstFieldMaskArg whichField,
> UInt32 origin,
> BitVector details)
> {
> MFParentFieldContainerPtr::const_iterator parentsIt =
> this->_mfExeParents.begin();
>
> MFParentFieldContainerPtr::const_iterator parentsEnd =
> this->_mfExeParents.end();
>
> MFUInt16::const_iterator idxIt = _mfExeVariableIdx.begin();
>
> OSG_ASSERT(_mfExeParents.size() == _mfExeVariableIdx.size());
>
> while(parentsIt != parentsEnd)
> {
> -> (*parentsIt)->changed(
> TypeTraits<BitVector>::One << parentsIt.getParentFieldPos(),
> ChangedOrigin::Child,
> *idxIt);
>
> ++parentsIt;
> ++idxIt;
> }
>
> ...
>
> because the _mfExeParents does contain garbage. Now I have looked up the
> place where this container is filled. This is done in
>
> void ShaderProgramVariables::merge(ShaderProgramVariables *pVars,
> MFInt32 *pVarLoc,
> MFInt32 *pProcVarLoc)
> {
> ...
> for(; vIt != vEnd; ++vIt)
> {
> if(*vIt != NULL)
> {
> -> (*vIt)->addExeParent(this,
> ShaderProgramVariables::VariablesFieldId,
> uiPos);
> ...
>
> However, I could not find any call to the corresponding subExeParent
> function nor to any other appropriate cleanup method.
>
> void ShaderValueVariable::addExeParent(FieldContainer * const pParent,
> UInt16
> uiParentFieldId,
> UInt16 uiVarIdx
> )
> {
> editMField(ExeParentsFieldMask, _mfExeParents );
> editMField(ExeVariableIdxFieldMask, _mfExeVariableIdx);
>
> _mfExeParents .push_back(pParent, uiParentFieldId);
> _mfExeVariableIdx.push_back(uiVarIdx );
>
> }
>
> void ShaderValueVariable::subExeParent(FieldContainer * const pParent)
> {
> Int32 iParentIdx = _mfExeParents.findIndex(pParent);
>
> if(iParentIdx != -1)
> {
> editMField(ExeParentsFieldMask, _mfExeParents );
> editMField(ExeVariableIdxFieldMask, _mfExeVariableIdx);
>
> _mfExeParents .erase(iParentIdx);
> _mfExeVariableIdx.erase(iParentIdx);
> }
> }
>
> Maybe this is of some help. Currently, I'm not in the position to solve
> this issue.
>
> Best,
> Johannes
>
>
>
>
> ------------------------------------------------------------------------------
> Introducing Performance Central, a new site from SourceForge and
> AppDynamics. Performance Central is your source for news, insights,
> analysis and resources for efficient Application Performance Management.
> Visit us today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
> _______________________________________________
> Opensg-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensg-users
--
Gerrit Voß
盖瑞客
---------------------------------------------------
Fraunhofer IDM @ NTU
南洋理工大学, Nanyang Technological University, (NTU)
新加坡, Singapore
--------------------------------------------------
If we communicate everything we ever think, speech
just becomes static. And all of us become bores.
J. Clarkson
------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and
AppDynamics. Performance Central is your source for news, insights,
analysis and resources for efficient Application Performance Management.
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users