http://bugs.winehq.org/show_bug.cgi?id=22521
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |http://www.microsoft.com/en | |-us/download/details.aspx?i | |d=1639 CC| |focht@gmx.net Summary|.NET 2.0 sp2 installer does |.NET 2.0 SP2 installer |not successfully install. |fails (RegSvcs.exe | |bootstrapper expects | |updated assemblies while | |GAC update is deferred | |during install) OS/Version|Mac OS X |other
--- Comment #34 from Anastasius Focht focht@gmx.net 2012-07-03 18:09:36 CDT --- Hello,
the bug started as 'winetricks dotnet20sp2' recipe doesn't work. This has been fixed for quite some time now.
Rechristening to target a real issue - purist mode - without any workarounds.
The problem is that "RegSvcs" bootstrapper expects a newer version of "mscorlib" which is already updated in .NET Framework assembly root folder while the GAC assembly/native image is still the old one (assembly GAC update is deferred in script).
Unfortunately not visible in trace logs, you have to debug the mess.
--- snip --- 005f:Call KERNEL32.CreateProcessA(00000000,02792170 ""C:\windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe" /bootstrapi",00000000,00000000,00000001,00000000,00000000,00000000,02aae808,02aac32c) ret=010fdede ... 0061:Call KERNEL32.__wine_kernel_init() ret=7bc5337a 005f:Ret KERNEL32.CreateProcessA() retval=00000001 ret=010fdede ... 0061:Call KERNEL32.LoadLibraryExW(0014ead8 L"C:\windows\assembly\NativeImages_v2.0.50727_32\mscorlib\f5ffa0caf6cafb40ab7fa752a3ed7faf\mscorlib.ni.dll",00000000,00000008) ret=79e862c8 0061:Ret KERNEL32.LoadLibraryExW() retval=790c0000 ret=79e862c8 ... 0061:Call KERNEL32.LoadLibraryExW(0033ddd8 L"C:\windows\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll",00000000,00000000) ret=79e862c8 ... 0061:Ret PE DLL (proc=0x790a7418,module=0x79060000 L"mscorjit.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 0061:Ret KERNEL32.LoadLibraryExW() retval=79060000 ret=79e862c8 ... 0061:Call KERNEL32.GetProcAddress(79060000,79ec8570 "getJit") ret=79ec8419 0061:Ret KERNEL32.GetProcAddress() retval=029f0000 ret=79ec8419 0061:CALL mscorjit.getJit(<unknown, check return>) ret=79ec8477 0061:RET mscorjit.getJit() retval=790b7268 ret=79ec8477 ... 0061:Call KERNEL32.VirtualAlloc(00000000,00010000,00001000,00000004) ret=79e74a2b 0061:Ret KERNEL32.VirtualAlloc() retval=02a00000 ret=79e74a2b 0061:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7a0a2c48 ip=7a0a2c48 tid=0061 0061:trace:seh:raise_exception info[0]=00000001 0061:trace:seh:raise_exception info[1]=553da376 0061:trace:seh:raise_exception eax=553da376 ebx=00000000 ecx=0033de40 edx=00000000 esi=00000001 edi=003c31b5 0061:trace:seh:raise_exception ebp=0033de98 esp=0033de30 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00010202 0061:trace:seh:call_stack_handlers calling handler at 0x7a31df88 code=c0000005 flags=0 0061:CALL MSVCR80.__CxxFrameHandler3(<unknown, check return>) ret=7bc7af91 ... 0061:Call advapi32.ReportEventW(cafe4242,00000001,00000000,000003ff,00000000,00000001,00000000,0033d364 L"\9968\0016\3cf7\5503\e2b3\7a05",00000000) ret=7a136fa2 0061:fixme:advapi:ReportEventW (0xcafe4242,0x0001,0x0000,0x000003ff,(nil),0x0001,0x00000000,0x33d364,(nil)): stub 0061:err:eventlog:ReportEventW L".NET Runtime version 2.0.50727.42 - Fatal Execution Engine Error (7A05E2B3) (80131506)" 0061:Ret advapi32.ReportEventW() retval=00000001 ret=7a136fa2 --- snip ---
At one point before the exception a class/type load fails. Stack values:
--- snip --- ... 0033F940 79E85458 ; ASCII "System.Globalization" 0033F944 79ECE060 ; ASCII "AgileSafeNativeMemoryHandle" 0033F948 0033F978 ; UNICODE "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ... --- snip ---
Searching for "AgileSafeNativeMemoryHandle" yields following:
"old" .NET 2.0.50727.42 GAC image (AgileSafeNativeMemoryHandle not found):
--- snip --- $ ll $(winepath "c:\windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll")
-rw-rw-r--. 1 focht focht 4308992 Jul 3 16:03 /home/focht/.wine/dosdevices/c:/windows/assembly/GAC_32/mscorlib/2.0.0.0__b77a5c561934e089/mscorlib.dll
$ strings $(winepath "c:\windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll") | grep AgileSafeNativeMemoryHandle $ --- snip ---
Same with "native" image:
--- snip --- $ ll $(winepath "c:\windows\assembly\NativeImages_v2.0.50727_32\mscorlib\f5ffa0caf6cafb40ab7fa752a3ed7faf\mscorlib.ni.dll")
-rw-rw-r--. 1 focht focht 11411456 Jul 3 16:03 /home/focht/.wine/dosdevices/c:/windows/assembly/NativeImages_v2.0.50727_32/mscorlib/f5ffa0caf6cafb40ab7fa752a3ed7faf/mscorlib.ni.dll
$ strings $(winepath "c:\windows\assembly\NativeImages_v2.0.50727_32\mscorlib\f5ffa0caf6cafb40ab7fa752a3ed7faf\mscorlib.ni.dll") | grep AgileSafeNativeMemoryHandle $ --- snip ---
Now the mscorlib assembly in .NET folder, the new class/type is there:
--- snip --- $ ll $(winepath "c:\windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll") -rw-rw-r--. 1 focht focht 4546560 Jul 25 2008 /home/focht/.wine/dosdevices/c:/windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
$ strings $(winepath "c:\windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll") | grep AgileSafeNativeMemoryHandle AgileSafeNativeMemoryHandle --- snip ---
The file version is 2.0.50727.3053 (.NET 2.0 SP2)
If we go back to msi based installer log, the actual GAC update is deferred. This leads to temporary inconsistency between .NET assembly root folder and GAC folders:
--- snip --- ... 0059:Call msi.MsiSetPropertyW(00000004,010da7b8 L"DD_CA_ConfigureNativeImageCommit_X86.3643236F_FC70_11D3_A536_0090278A1BB8",0279740a L"C:\windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe install "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /NoDependencies /queue:1 /nologo /netfxpri1;4546560") ret=010eb764 ... 0059:trace:msi:ACTION_PerformUIAction Performing action (L"DD_CA_ConfigureNativeImageCommit_X86.3643236F_FC70_11D3_A536_0090278A1BB8") ... 0059:trace:msi:ACTION_CustomAction Handling custom action L"DD_CA_ConfigureNativeImageCommit_X86.3643236F_FC70_11D3_A536_0090278A1BB8" (641 L"BIN_File_237924_X86" L"ConfigureNativeImage") ... 0059:trace:msi:defer_custom_action deferring commit action 0059:trace:msi:msi_schedule_action Scheduling action L"[C:\windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe install "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /NoDependencies /queue:1 /nologo /netfxpri1;4546560<=>S-1-5-21-0-0-0-1000<=>{C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F}]DD_CA_ConfigureNativeImageCommit_X86."... in script 1 ... 003c:trace:msi:MSI_EvaluateConditionW 1 <- L"($CLR_SYS_ENTSERVICES_DLL_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 > 2) AND ( VersionNT > 499 )" 003c:trace:msi:ACTION_PerformAction Performing action (L"DD_CA_ComregEnterpriseServices_X86.3643236F_FC70_11D3_A536_0090278A1BB8") ... 003c:trace:msi:msi_get_property returning L""C:\windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe" /bootstrapi;13" for property L"DD_CA_ComregEnterpriseServices_X86.3643236F_FC70_11D3_A536_0090278A1BB8" 003c:trace:msi:msi_set_property 0x1c0bf8 L"CustomActionData" L""C:\windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe" /bootstrapi;13" ... 003c:trace:msi:HANDLE_CustomType1 Calling function L"QuietExec" from L"C:\users\focht\Temp\msi89f4.tmp" ... 005f:trace:msi:MSI_ProcessMessage (nil) 0x3a0c04f5 0x39e759e5 7fdf 100 L"Action 20:40:27: RunProcess. Registering System.EnterpriseServices.dll" ... 005f:Call KERNEL32.CreateProcessA(00000000,02792170 ""C:\windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe" /bootstrapi",00000000,00000000,00000001,00000000,00000000,00000000,02aae808,02aac32c) ret=010fdede ... --- snip ---
Anyway, we have a working winetricks recipe that works around.
Regards