Yes. I ran osglight and osgtext without any problems. Since it's happening
in the osg::MatrixTransform constructor it really seems like somehow it's
an interaction with something in one of the member variable constructors.
Especially since after osg::Transform (the direct ancestor of
osg::MatrixTransform) is constructed the _prvData member is a valid
pointer, and immediately after osg::MatrixTransform's constructor executes
the _prvData member is zeroed.
Do you remember any specific examples that would use an
osg::MatrixTransform and assign it to a ref_ptr? I'd be happy to test out
a specific example.
> This sounds like something is quite broke at the OpenThreads level. Are
> you
> able to run any of the OSG examples or applications?
> -Paul
>
>
>> I'm having trouble with a segfault in VTP's glutsimple
>> application, but it looks like the problem traces back into
>> OSG. For reference, I'm using OSG 2.2.0 on Fedora 9, and VTP 080506.
>>
>> Here's a backtrace:
>>
>> ScopedLock
>> OpenThreads/ScopedLock:31
>> osg::Referenced::ref osg/Referenced:128
>> osg::ref_ptr<osg::MatrixTransform>::operator= osg/ref_ptr:50
>> vtTransform NodeOSG.cpp:1223
>> ...
>>
>> The problem occurs when the osg::MatrixTransform* is assigned
>> to an osg::ref_ptr and in particular when the ref_ptr
>> assignment tries to lock the mutex. It appears that the mutex
>> protected member Referenced._refMutex._prvData is a null pointer.
>>
>> Here's a modified piece of code from VTP replacing the
>> vtTransform constructor that results in a segfault:
>>
>> vtTransform::vtTransform() : vtGroup(true), vtTransformBase() {
>> // Constructs a transform where
>> Referenced._refMutex._prvData is null
>> osg::MatrixTransform* pxform = new osg::MatrixTransform;
>>
>> // segfaults on locking since _prvData is null
>> osg::ref_ptr<MatrixTransform> rpxform = pxform;
>>
>> m_pTransform = pxform;
>> SetOsgGroup(m_pTransform);
>> }
>>
>> Tracing a bit deeper, the problem seems to be somewhere
>> between the osg::MatrixTransform and osg::Transform
>> constructors, but I'm not sure how or where.
>>
>> Inspecting Referenced._refMutex._prvData after the
>> osg::Transform constructor has completed,
>> Referenced._refMutex = 0x1cb8e70 and
>> Referenced._refMutex._prvData = 0x1cb8e90 (both valid pointers).
>>
>> But, at the end of the osg::MatrixTransform constructor
>> Referenced._refMutex still has it's valid pointer to
>> 0x1cb8e70 but now Referenced._refMutx._prvData is now 0x00 (null).
>>
>> Anyone else encountered this? BTW, I tried OSG 2.4 and
>> experienced the same behavior.
>>
>> Thanks,
>>
>> Rick
>>
>>
>>
>> _______________________________________________
>> osg-users mailing list
>> [email protected]
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-opensce
> negraph.org
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org