Hi There,
I'm trying to integrate mxflib into my project. I'm accessing the library from multiple threads, but the access itself is serialised using a critical section. Is it safe to assume that mxflib is re-entrant?
Basically, my problem is that on application exit mxflib crashes.. the stack trace looks like this:
Code:
mxflib::SmartPtr<mxflib::MDOType>::__Assign(mxflib::IRefCount<mxflib::MDOType> * 0x00000000) line 417 + 16 bytes
mxflib::SmartPtr<mxflib::MDOType>::~SmartPtr<mxflib::MDOType>() line 445
mxflib::SmartPtr<mxflib::MDOType>::`scalar deleting destructor'(unsigned int 0) + 37 bytes
std::_Destroy(mxflib::SmartPtr<mxflib::MDOType> * 0x0360f0e8) line 38 + 19 bytes
std::allocator<mxflib::SmartPtr<mxflib::MDOType> >::destroy(mxflib::SmartPtr<mxflib::MDOType> * 0x0360f0e8) line 68 + 23 bytes
std::list<mxflib::SmartPtr<mxflib::MDOType>,std::allocator<mxflib::SmartPtr<mxflib::MDOType> > >::erase(std::list<mxflib::SmartPtr<mxflib::MDOType>,std::allocator<mxflib::SmartPtr<mxflib::MDOType> > >::iterator {...}) line 239
std::list<mxflib::SmartPtr<mxflib::MDOType>,std::allocator<mxflib::SmartPtr<mxflib::MDOType> > >::erase(std::list<mxflib::SmartPtr<mxflib::MDOType>,std::allocator<mxflib::SmartPtr<mxflib::MDOType> > >::iterator {...}, std::list<mxflib::SmartPtr<mxflib::MDOType>,std::allocator<mxflib::SmartPtr<mxflib::MDOType> > >::iterator {...}) line 244 + 29 bytes
std::list<mxflib::SmartPtr<mxflib::MDOType>,std::allocator<mxflib::SmartPtr<mxflib::MDOType> > >::~list<mxflib::SmartPtr<mxflib::MDOType>,std::allocator<mxflib::SmartPtr<mxflib::MDOType> > >() line 152
$E1753() + 42 bytes
_CRT_INIT(void * 0x02dd0000, unsigned long 0, void * 0x00000001) line 236
_DllMainCRTStartup(void * 0x02dd0000, unsigned long 0, void * 0x00000001) line 289 + 17 bytes
NTDLL! 7c9011a7()
NTDLL! 7c923f31()
KERNEL32! 7c81cd76()
KERNEL32! 7c81cdee()
doexit(int 0, int 0, int 0) line 392
exit(int 0) line 279 + 13 bytes
WinMainCRTStartup() line 345
KERNEL32! 7c816fd7()
The crash is in "mxflib\mxflib\smartptr.h", line 417.
I'm compiling under windows XP SP2, using VC++ ver 6.
I'm not sure if this is soemthing I'm doing - I've been prettuy careful about multi-threading issues.
Are there any gotchyas I should be aware about when attempting this kind of think with mxflib?