https://bugs.winehq.org/show_bug.cgi?id=30469
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |7c06862c52683dc230dd0f372ea | |f8fb6a5d3284a Status|CLOSED |RESOLVED Component|-unknown |fusion Resolution|INVALID |FIXED Keywords| |dotnet Summary|crash in segflex |Multiple .NET 2.0 | |applications abort with | |error | |'System.IO.FileNotFoundExce | |ption: Could not load file | |or assembly | |'System.Windows.Forms, | |Version=2.0.0.0, | |Culture=neutral, | |PublicKeyToken=b77a5c561934 | |e089' (SegFlex demo) URL| |https://web.archive.org/web |http://www.segflex.com.br/d |/20140627043415/http://segf |emonstrativo.htm |lex.com.br/download/SegFlex | |Demo.exe
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
while putting stable links in various bugs for documentation I sometimes test/investigate bugs again on a whim.
Although 8 years late I have to apologize to 'daduck10'. There was indeed a bug in Wine at that time.
The .NET 2.0 application binds to 'System.Windows.Forms' assembly v2.0.0.0 with public key token 'b77a5c561934e089'.
--- snip --- ... 0009:Call shlwapi.PathFindFileNameW(0032d0ac L"C:\windows\assembly\GAC_32\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll") ret=79f8a1e6 0009:Ret shlwapi.PathFindFileNameW() retval=0032d140 ret=79f8a1e6 0009:Call KERNEL32.GetFileAttributesW(0032d0ac L"C:\windows\assembly\GAC_32\System.Windows.Forms\2.0.0.0__b77a5c561934e089") ret=79eb7b18 0009:Ret KERNEL32.GetFileAttributesW() retval=ffffffff ret=79eb7b18 ... 0009:Call shlwapi.PathFindFileNameW(0032d0ac L"C:\windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll") ret=79f8a1e6 0009:Ret shlwapi.PathFindFileNameW() retval=0032d144 ret=79f8a1e6 0009:Call KERNEL32.GetFileAttributesW(0032d0ac L"C:\windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089") ret=79eb7b18 0009:Ret KERNEL32.GetFileAttributesW() retval=ffffffff ret=79eb7b18 ... 0009:Call shlwapi.PathFindFileNameW(0032d0ac L"C:\windows\assembly\GAC\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll") ret=79f8a1e6 0009:Ret shlwapi.PathFindFileNameW() retval=0032d13a ret=79f8a1e6 0009:Call KERNEL32.GetFileAttributesW(0032d0ac L"C:\windows\assembly\GAC\System.Windows.Forms\2.0.0.0__b77a5c561934e089") ret=79eb7b18 0009:Ret KERNEL32.GetFileAttributesW() retval=ffffffff ret=79eb7b18 --- snip ---
External assembly references of main assembly:
--- snip --- using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices;
// Assembly SegFlex, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: 3FA9D63A-1567-4559-9BF1-F2FB4E3FF3F0 // Assembly references: // mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a // System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // DevExpress.XtraScheduler.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // DevExpress.XtraScheduler.v8.3.Core, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // DevExpress.XtraNavBar.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // DevExpress.XtraGrid.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // DevExpress.XtraEditors.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // DevExpress.Utils.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // DevExpress.XtraPrinting.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // Vintasoft.Twain, Version=5.0.7.3, Culture=neutral, PublicKeyToken=153caf29a10d2e31 // DevExpress.XtraReports.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // DevExpress.XtraCharts.v8.3.UI, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a // DevExpress.XtraBars.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // DevExpress.XtraVerticalGrid.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a // DevExpress.Data.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // DevExpress.XtraCharts.v8.3, Version=8.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a // Interop.DAO, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null
[assembly: AssemblyTitle("SuperSeg")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: Guid("37e34e2d-f340-4f8c-ab0d-17b0c38cb732")] [assembly: AssemblyCompany("Notebook Dell")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyDescription("")] [assembly: ComVisible(false)] [assembly: AssemblyTrademark("")] [assembly: AssemblyCopyright("Copyright © Notebook Dell 2007")] [assembly: AssemblyProduct("SuperSeg")] [assembly: AssemblyVersion("1.0.0.0")] --- snip ---
.NET Framework 2.0 installation in 32-bit WINEPREFIX using recent 'winetricks -q dotnet20'
Wine 1.5.4 (pubkey 0907d8af90186095 = ill-formed)
--- snip --- $ find .wine/drive_c/ -iname "System.Windows.Forms.dll" .wine/drive_c/windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__0907d8af90186095/System.Windows.Forms.dll .wine/drive_c/windows/Microsoft.NET/Framework/v2.0.50727/System.Windows.Forms.dll --- snip ---
Wine 1.5.5 (pubkey b77a5c561934e089 = ok)
--- snip --- $ find .wine/drive_c/ -iname "System.Windows.Forms.dll" .wine/drive_c/windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll .wine/drive_c/windows/Microsoft.NET/Framework/v2.0.50727/System.Windows.Forms.dll --- snip ---
It was fixed by commit https://source.winehq.org/git/wine.git/commitdiff/7c06862c52683dc230dd0f372e... ("fusion: Handle DWORD-sized blob indices when loading the public key.").
Part of Wine 1.5.5 release.
Thanks Hans.
---
I got curious about my own claim "it works" from comment #1. After researching the history of 'winetricks' I came to the conclusion that I used a custom 'winetricks' at that time. Many of the early dotnetXX verbs/workarounds originated from my bug analysis/comments.
I most likely had native 'fusion' override already in my 'winetricks' which worked around this bug.
Interestingly, the change to use native 'fusion' override in 'winetricks' 'dotnet20' verb was introduced two months later. It was meant to fix a different bug/regression, introduced between Wine 1.5.5 and 1.5.6: Bug 30845 ("Windows 7 SDK installer fails before putting up GUI"). The bug summary line is wrong, it was again .NET Framework 2.0 installation which was broken. No one cared to correct the summary.
https://bugs.winehq.org/show_bug.cgi?id=30845#c10
https://github.com/Winetricks/winetricks/commit/14c2799134bc2ec4c4df8d24d63f... ("dotnet20: incorporate new recipe from 30845 ")
--- snip --- if w_workaround_wine_bug 30845 "Using native fusion while installing..." ,1.5.5 then w_try env WINEDLLOVERRIDES=mscoree,fusion=n $WINE dotnetfx.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} else w_try $WINE dotnetfx.exe ${W_OPT_UNATTENDED:+/q /c:"install.exe /q"} fi --- snip ---
$ wine --version wine-1.5.4-292-g7c06862c526
$ sha1sum SegFlexDemo.exe 540a9b6b9e4a9cde113e1d5fd24b29c9b94a4a7b SegFlexDemo.exe
$ du -sh SegFlexDemo.exe 18M SegFlexDemo.exe
Regards