Trying buildbot on wine; foiled by distutils expecting mscoree to be resident?
Louis Lenders
xerox_xerox2000 at yahoo.co.uk
Fri May 1 07:04:01 CDT 2009
> so I tried doing
> wine pywin32-212.win32-py2.6.exe
> first. This fails immediately as described in
> http://bugs.winehq.org/show_bug.cgi?id=13844
> It seems to terminate because it tries to get
> a handle to the loaded copy of mscoree.dll
> and fails (because there isn't one).
>
> The installer seems to have been created by python's distutils.
>
> Mark Hammond seems to be well aware of low level
> issues that affect the installer, see e.g.
> http://bugs.python.org/issue5075
> so perhaps he could explain why the installer expects
> mscoree.dll to be resident...
>
>
This is explained here: http://bugs.winehq.org/show_bug.cgi?id=6880#c7 (I guess
it's the same issue)
Copy and paste:
--- snip ---
I've seen quite some applications that fail in the end like this one:
0009:Call kernel32.GetModuleHandleA(011bf1d4 "mscoree.dll") ret=00c5936f
0009:Ret kernel32.GetModuleHandleA() retval=00000000 ret=00c5936f
Then ExitProcess.
--- snip ---
This has nothing to do with this bug.
The application uses dynamic msvc 7.1 runtime, which implicitly pulls
mscoree.dll in.
Normally mscrt __crtExitProcess() calls just ExitProcess() but on newer versions
a call to __crtCorExitProcess() is made to ensure proper shutdown of managed
parts (even if you don't use managed = .NET code).
CorExitProcess() basically does this:
--- snip ---
hModule = GetModuleHandle("mscoree.dll");
if (hModule != NULL)
{
pfn = (PFN_EXIT_PROCESS) GetProcAddress( hModule, "CorExitProcess");
if (pfn != NULL)
pfn(status);
}
--- snip ---
If mscoree module or the export is not found it causes no harm.
It works as designed.
The reason for this additional (implicit) shutdown code is you have no control
whether a part of operation system or application dll (3rd party/injected) might
pull in managed stuff thats why this code exists.
Regards
More information about the wine-devel
mailing list