[Bug 22521] .NET 2.0 SP2 installer fails (RegSvcs.exe bootstrapper expects updated assemblies while GAC update is deferred during install)

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Jul 3 18:09:36 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=22521

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |http://www.microsoft.com/en
                   |                            |-us/download/details.aspx?i
                   |                            |d=1639
                 CC|                            |focht at 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 at 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

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list