Hi,

I'm currently looking at a problem with osgExit...
I use a pbuffer and a passive window to do the rendering,
I have a class that has created an fbo object, it called
addRefCP on that ptr and in the destructor I call subRefCP.
The osgExit crashes when calling the subRefCP. I made
sure that the ref counter is >0 (in my case == 1) and
that the pointer is != NullFC. The stack trace is here:


        ntdll.dll!7c91104b()    
 >      OSGBaseD.dll!osg::WinThreadLockBase::aquire()  Riga 379 + 0xf byte      
 > C++
        OSGBaseD.dll!osg::Lock::aquire()  Riga 452      C++
        OSGBaseD.dll!osg::LockPool::aquire(void * keyP=0x031fc830)  Riga 537    
C++
        OSGSystemD.dll!osg::FieldContainerPtrBase::subRef()  Riga 127 + 
0x15 byte       C++
        OSGSystemD.dll!osg::subRefCP(const osg::FieldContainerPtrBase & 
objectP={...})  Riga 88 C++


The line of code where it crashes is this one:

    EnterCriticalSection(&_pCriticalSection);

pCriticalSection is


-               _pCriticalSection       {DebugInfo=0xfeeefeee 
LockCount=-17891601 
RecursionCount=-17891602 ...}   _RTL_CRITICAL_SECTION
-               DebugInfo       0xfeeefeee {Type=??? CreatorBackTraceIndex=??? 
CriticalSection=??? ...}        _RTL_CRITICAL_SECTION_DEBUG *
                Type    CXX0030: Errore: impossibile valutare l'espressione     
                CreatorBackTraceIndex   CXX0030: Errore: impossibile valutare 
l'espressione     
                CriticalSection CXX0030: Errore: impossibile valutare 
l'espressione     
+               ProcessLocksList        {Flink=??? Blink=??? }  _LIST_ENTRY
                EntryCount      CXX0030: Errore: impossibile valutare 
l'espressione     
                ContentionCount CXX0030: Errore: impossibile valutare 
l'espressione     
+               Spare   0xfeeeff06      unsigned long [2]
                LockCount       -17891601       long
                RecursionCount  -17891602       long
                OwningThread    0xfeeefeee      void *
                LockSemaphore   0xfeeefeee      void *
                SpinCount       4277075694      unsigned long


where OwningThread seems quite suspicious...

If I remove the addRefCP and subRefCP calls, the osgExit works
ok. osgInit, the rendering etc and osgExit run all in the same
thread! The context and the PassiveWindow is deleted _before_
calling osgExit(). Any ideas?

Regards,

   Toni

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to