Hi,

MSVCRT is calling CorExitProcess on exit if mscoree.dll is loaded. 
mono.dll is hooking some mscoree.dll exports (including CorExitProcess) 
to itself but is not removing these hooks on unload.

I suggest you to keep an extra reference to mono.dll so that it will not 
be unloaded until process termination.

This is a bug that should definitely be fixed but I will need some time 
to come up with an optimal solution.

Kornél

fozzie wrote:
> The problem occurs when a separate DLL is pulled into the central executable
> via LoadLibrary(). On shutdown of the executable the DLL is freed via
> FreeLibrary() and this results in unload of mono.dll, which changes the
> mscoree.dll address space.
> 
> The debug work directory should be set to $(OutDir) or mscorlib.dll will not
> be found. There is a breakpoint immediately after mono_jit_init_version() to
> allow examination of the address of CorExitProcess. 
> 
> The lib and etc directories from the Mono 2.4 install should be copied below
> bin\mono\. 
> 
> The following are copied from the install directories to the bin\debug
> directory. They aren't big so i kept them in the zip:
> libglib-2.0-0.dll
> libgmodule-2.0-0.dll
> libgthread-2.0-0.dll
> 
> I tried uploading the file in both Chrome and IE 8, but it doesn't seem to
> work so i've stuck it at
> http://rapidshare.com/files/226924363/mscoree_crash.zip.html. Hopefully it
> helps to track this down.
_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to