http://bugs.winehq.org/show_bug.cgi?id=11052
Summary: crypt32 accesses freed memory and tries to enter deleted critical sections on process shutdown Product: Wine Version: 0.9.52. Platform: Other OS/Version: other Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: crypt32 AssignedTo: wine-bugs@winehq.org ReportedBy: kumbayo84+wine_bugzilla@gmail.com
Created an attachment (id=10060) --> (http://bugs.winehq.org/attachment.cgi?id=10060) output more debug info + possible solution + simplify test case to only 1 call
crypt32 accesses memory after it has been freed normally this does not manifest, but a easy way to reproduce this is to run the cert test in the wine test suite with 2 patches of me applied
what happens is: on process shutdown rsaenh.dll is unloaded and it calls destroy_handle_table which HeapFrees the handle table and deletes a critical section
then crypt32.dll is unloaded and it tries to release a handle(release_handle) from rsaenh.dll which accesses the HeapFreed handle table + it calls a function of a already unloaded dll and tries to enter the already uninitialized critical section which hangs with my patch that zeros the whole critical section when deleting it
http://blogs.msdn.com/oldnewthing/archive/2005/05/23/421024.aspx also talks about this problem of
inside the first patch there are also 2 commented lines which make crypt32 do nothing when DLL_PROCESS_DETACH happens because of process shutdown this might already be the proper solution for this problem