http://www.perlmonks.org?node_id=891214


in reply to Re: Perl crashs always during global destruction when using WIN32 OLE object in multithread
in thread Perl crashs always during global destruction when using WIN32 OLE object in multithread

COM+ dlls use the registry to indicate what threading model STA,MTA,Free etc they use, and if they are in-proc (dll) or out-of proc (exe).

So better check the thread model first to see if it even can be accessed by multiple threads and if so then set your OLE initialization with the appropriate COINT_ value

Normally even if the dll is not multi-thread aware it should pose no problem since it would serialize the calls through the STA, but there is so much going on behind the scene, especially COM+ objects being prone to re-entrancy issues,that make Corion's advise (use OLE from one thread) the one to follow

  • Comment on Re^2: Perl crashs always during global destruction when using WIN32 OLE object in multithread