http://bugs.winehq.org/show_bug.cgi?id=30075
Bug #: 30075 Summary: Microsoft .NET Framework 4.5 Developer Preview CLR needs kernel32.dll WerRegisterRuntimeExceptionModule (returning S_OK) to run .NET apps Product: Wine Version: 1.4-rc6 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net Classification: Unclassified
Hello,
after upgrading an existing .NET Framework 4.0 WINEPREFIX with .NET Framework 4.5 (dev preview) some simple apps that previously worked failed to run.
I created a simple C# based .NET "hello world" console app using the provided C# compiler (csc.exe) in .NET 4.0 prefix and it fails to execute after .NET 4.5 CLR upgrade:
--- snip --- 002b:Starting process L"C:\windows\Microsoft.NET\Framework\v4.0.30319\hello.exe" (entryproc=0x40233e) ... 002b:Call KERNEL32.GetModuleHandleW(007f8424 L"kernel32.dll") ret=008378ea 002b:Ret KERNEL32.GetModuleHandleW() retval=7b810000 ret=008378ea 002b:Call KERNEL32.GetProcAddress(7b810000,00837968 "WerRegisterRuntimeExceptionModule") ret=008378fe 002b:Ret KERNEL32.GetProcAddress() retval=00000000 ret=008378fe ... 002b:Call KERNEL32.LoadLibraryExW(0032f944 L"C:\windows\Microsoft.NET\Framework\v4.0.30319\mscorrc.dll",00000000,00000002) ret=008e1f58 002b:Ret KERNEL32.LoadLibraryExW() retval=00f00001 ret=008e1f58 ... 002b:Call user32.MessageBoxW(00000000,0032fa20 L"CLR error: 80004005.\n The program will now terminate.",0032f3f0 L"hello.exe - Fatal error",00002010) ret=00ace3f9 ... --- snip ---
It seems there is an improved integration of error reporting with WER.
MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/dd408167%28v=vs.85%2...
Adding a stub returning E_NOTIMPL doesn't make the CLR happy:
--- snip --- 002b:Call KERNEL32.GetModuleHandleW(007f8424 L"kernel32.dll") ret=008378ea 002b:Ret KERNEL32.GetModuleHandleW() retval=7b810000 ret=008378ea 002b:Call KERNEL32.GetProcAddress(7b810000,00837968 "WerRegisterRuntimeExceptionModule") ret=008378fe 002b:Ret KERNEL32.GetProcAddress() retval=7b825418 ret=008378fe 002b:Call KERNEL32.WerRegisterRuntimeExceptionModule(0032f88c L"C:\windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll",00740000) ret=00837915 002b:fixme:wer:WerRegisterRuntimeExceptionModule (L"C:\windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll", 0x740000) stub! 002b:Ret KERNEL32.WerRegisterRuntimeExceptionModule() retval=80004001 ret=00837915 ... 002b:Call user32.MessageBoxW(00000000,0032fa20 L"CLR error: 80004005.\n The program will now terminate.",0032f3f0 L"hello.exe - Fatal error",00002010) ret=00ace3f9 --- snip ---
You have to return S_OK to please the CLR. With that change "hello world" runs again. Yay!
Regards