[Bug 30758] New: .NET 4.0 installer/CLR native ngen.exe runs into "unimplemented function fusion.dll.InitializeFusion, aborting" (Wine builtin fusion override during .NET 4 install)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed May 23 16:29:26 CDT 2012


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

             Bug #: 30758
           Summary: .NET 4.0 installer/CLR native ngen.exe runs into
                    "unimplemented function fusion.dll.InitializeFusion,
                    aborting" (Wine builtin fusion override during .NET 4
                    install)
           Product: Wine
           Version: 1.5.4
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: fusion
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: focht at gmx.net
    Classification: Unclassified


Hello,

with bug 30707 is fixed all .NET 4.0 assemblies are now installed when using
"fusion=builtin,native".

As already written, an additional "ngen=builtin" is needed for install process
to avoid native ngen.exe being called which wants this unimplemented fusion
API.

It's not really harmful as these deferred assembly -> GAC install steps have
already been carried out by msi install itself but it might confuse/scare users
looking at terminal output, spotting "unimplemented function
fusion.dll.InitializeFusion, aborting".

--- snip ---
00ff:Call KERNEL32.CreateProcessW(00000000,00cb5e98
L"C:\\windows\\Microsoft.NET\\Framework\\v4.0.30319\\ngen.exe
executeQueuedItems 1",00000000,00000000,00000001,00000000,00000000,00cb6058
L"C:\\windows\\Microsoft.NET\\Framework\\v4.0.30319",0151d6b8,0151d698)
ret=00c8ffd9
...
0101:Call KERNEL32.__wine_kernel_init() ret=7bc5312a
00ff:Ret  KERNEL32.CreateProcessW() retval=00000001 ret=00c8ffd9 
...
0101:Call KERNEL32.RaiseException(80000100,00000001,00000002,0033e640)
ret=f73966d9
0101:trace:seh:raise_exception code=80000100 flags=1 addr=0x7b83940f
ip=7b83940f tid=0101
0101:trace:seh:raise_exception  info[0]=f7396740
0101:trace:seh:raise_exception  info[1]=f7396780
wine: Call from 0x7b83940f to unimplemented function
fusion.dll.InitializeFusion, aborting 
...
0101:Call oleaut32.SysAllocString(0016eb08 L"Uninstalling assembly mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 because of an
error during compilation: Unknown exception.\n") ret=608f07f9 
...
--- snip ---

The assemblies are not really uninstalled as the message suggests.

Adding a simple stub for HRESULT WINAPI InitializeFusion(void), returning
E_NOTIMPL is enough to avoid that.
Only called two times:

--- snip ---
...
fixme:fusion:InitializeFusion stub!
fixme:fusion:InitializeFusion stub!
--- snip ---

After winetricks install recipe is finished, "fusion=builtin,native" override
should be dropped/reversed (not made permanent).

This allows for GAC rebuild/updates or later installation of assemblies that
are not part of msi installers (using native ngen).
For example to trigger manual GAC rebuild/update:

--- snip ---
$ wine "c:\\windows\\Microsoft.NET\\Framework\\v4.0.30319\\ngen.exe" update
--- snip ---

Regard

-- 
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