Hi,

Has anyone experienced issues with OpenThreads Mutext::lock()? Occasionally a 
crash occurs when starting my application but only if the threading model is 
not SingleThreaded. The crash occurs in the following functions of OpenThreads:


Code:

int Mutex::lock() {
    Win32MutexPrivateData *pd =
        static_cast<Win32MutexPrivateData*>(_prvData);

#ifdef USE_CRITICAL_SECTION

    // Block until we can take this lock.
    EnterCriticalSection( &(pd->_cs) );

    return 0;

#else
[...]
#endif
}




What I noticed is that sometimes "pd" is 0 eventhough "_prvData" is not 0!! I 
can't understand how that can occur unless there's a concurency issue. As a 
test, I added a sanity check after initializing the "pb" local variable, as 
follows:


Code:

    while( pd == 0 )
    {
        Sleep( 10 ); // sleep for 10ms and try again...
        pd = static_cast<Win32MutexPrivateData*>(_prvData);
    }




I know it's dumb... but it works. I've been chasing this problem for a long 
time now and I haven't found a solution yet (except my dumb one). 

This issue occurs with v3.4.0 and v3.6.2. The crash occurs on Win7 and Win10 
when build with VS2013. 

Any help on this topic would be much appreciated.


Thank you!

Cheers,
Guy

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=74333#74333





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to