https://bugs.winehq.org/show_bug.cgi?id=37548
Bug ID: 37548 Summary: .NET applications using native .NET Frameworks fail to load, reporting 'CLR error: 80004005. The program will now terminate.' ('RtlAddVectoredContinueHandler' is a stub) Product: Wine Version: 1.7.30 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
since the addition of vectored continue handlers (http://source.winehq.org/git/wine.git/commitdiff/4c0ceacee0413031f129d2e62be...), .NET apps using MS .NET Frameworks fail to load.
Example: 'KeePass Password Safe' (.NET 2.0 based)
Download: http://sourceforge.net/projects/keepass/files/KeePass 2.x/2.28/KeePass-2.28-Setup.exe
Prerequisite: 'winetricks -q dotnet20'
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/KeePass Password Safe 2 ... $ WINEDEBUG=+tid,+seh,+relay wine ./KeePass.exe >>log.txt 2>&1 ... 002a:Call KERNEL32.GetModuleHandleW(79e7fcf4 L"kernel32.dll") ret=79ed0a64 002a:Ret KERNEL32.GetModuleHandleW() retval=7b810000 ret=79ed0a64 002a:Call KERNEL32.GetProcAddress(7b810000,79ed0ac8 "AddVectoredContinueHandler") ret=79ed0a79 002a:Ret KERNEL32.GetProcAddress() retval=7bc22b3c ret=79ed0a79 002a:Call KERNEL32.GetProcAddress(7b810000,79ed0aa8 "RemoveVectoredContinueHandler") ret=79ed0a86 002a:Ret KERNEL32.GetProcAddress() retval=7bc24324 ret=79ed0a86 002a:Call ntdll.RtlAddVectoredContinueHandler(00000001,7a05baae) ret=7a05e131 002a:fixme:seh:RtlAddVectoredContinueHandler 1 0x7a05baae stub 002a:Ret ntdll.RtlAddVectoredContinueHandler() retval=00000000 ret=7a05e131 ... 002a:Call msvcr80._CxxThrowException(0033fc70,79f9acc4) ret=79f97365 002a:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0033fbb4) ret=7e94e191 002a:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b83af87 ip=7b83af87 tid=002a 002a:trace:seh:raise_exception info[0]=19930520 002a:trace:seh:raise_exception info[1]=0033fc70 002a:trace:seh:raise_exception info[2]=79f9acc4 002a:trace:seh:raise_exception eax=7b826e65 ebx=7b8be000 ecx=79f9acc4 edx=0033fb10 esi=0033fbb0 edi=0033fb70 002a:trace:seh:raise_exception ebp=0033fb48 esp=0033fae4 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000283 002a:trace:seh:call_stack_handlers calling handler at 0x79f9ab98 code=e06d7363 flags=1 002a:trace:seh:call_stack_handlers handler at 0x79f9ab98 returned 1 002a:trace:seh:call_stack_handlers calling handler at 0x79f93fe6 code=e06d7363 flags=1 .... 002a:trace:seh:call_stack_handlers handler at 0x79f93fe6 returned 1 002a:trace:seh:call_stack_handlers calling handler at 0x7a2ee06a code=e06d7363 flags=1 002a:trace:seh:cxx_frame_handler handling C++ exception rec 0x33faf0 frame 0x33fccc trylevel 4 descr 0x7a2ee090 nested_frame (nil) 002a:trace:seh:dump_exception_type flags 0 destr (nil) handler (nil) type info 0x79f9acd4 002a:trace:seh:dump_exception_type 0: flags 1 type 0x7a38fdf0 {vtable=0x79f9a3b0 name=.PAVEEMessageException@@ ()} offsets 0,-1,0 size 4 copy ctor (nil) 002a:trace:seh:dump_exception_type 1: flags 1 type 0x7a38fdb8 {vtable=0x79f9a3b0 name=.PAVEEException@@ ()} offsets 0,-1,0 size 4 copy ctor (nil) 002a:trace:seh:dump_exception_type 2: flags 1 type 0x7a38fdd4 {vtable=0x79f9a3b0 name=.PAVCLRException@@ ()} offsets 0,-1,0 size 4 copy ctor (nil) 002a:trace:seh:dump_exception_type 3: flags 1 type 0x7a38f788 {vtable=0x79f9a3b0 name=.PAVException@@ ()} offsets 0,-1,0 size 4 copy ctor (nil) 002a:trace:seh:dump_exception_type 4: flags 1 type 0x7a38f7ac {vtable=0x79f9a3b0 name=.PAX ()} offsets 0,-1,0 size 4 copy ctor (nil) ... ... 002a:Call user32.MessageBoxW(00010020,0033fab4 L"CLR error: 80004005.\n The program will now terminate.",0033f484 L"KeePass.exe - Fatal error",00001010) ret=7a127ae5 ... --- snip ---
$ sha1sum KeePass-2.28-Setup.exe cdcdb6f86112d2a7a5b7094b7c49a30fdb2d280c KeePass-2.28-Setup.exe
$ du -sh KeePass-2.28-Setup.exe 2.5M KeePass-2.28-Setup.exe
$ wine --version wine-1.7.30-181-gffd3135
Regards
https://bugs.winehq.org/show_bug.cgi?id=37548
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |dotnet, download URL| |http://sourceforge.net/proj | |ects/keepass/files/KeePass | |2.x/2.28/KeePass-2.28-Setup | |.exe
https://bugs.winehq.org/show_bug.cgi?id=37548
Sebastian Lackner sebastian@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sebastian@fds-team.de
--- Comment #1 from Sebastian Lackner sebastian@fds-team.de --- Does faking success help? As mentioned in the previous bug report, I was unable to verify that vectored exception handlers work at all on Windows.
https://bugs.winehq.org/show_bug.cgi?id=37548
--- Comment #2 from Sebastian Lackner sebastian@fds-team.de --- Correct: I mean vectored continue handlers of course. ;)
https://bugs.winehq.org/show_bug.cgi?id=37548
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello Sebastian,
the CLR tries to install the continue handler in case the export is present. It only looks at the return value and bails if NULL. Returning the handler (faking success) makes it work again.
I suggest to send a patch to fake the handler installation or revert the commit asap otherwise we might see an influx of bug reports for Wine 1.7.31
Regards
https://bugs.winehq.org/show_bug.cgi?id=37548
--- Comment #4 from Sebastian Lackner sebastian@fds-team.de --- Patches were sent, lets hope they get upstream fast enough:
[1/2] http://source.winehq.org/patches/data/107676 [2/2] http://source.winehq.org/patches/data/107677
https://bugs.winehq.org/show_bug.cgi?id=37548
--- Comment #5 from Sebastian Lackner sebastian@fds-team.de --- Should be fixed with:
http://source.winehq.org/git/wine.git/commit/275ee4b376177f260693541a0f89f4e...
https://bugs.winehq.org/show_bug.cgi?id=37548
--- Comment #6 from Sebastian Lackner sebastian@fds-team.de --- Just tested myself (with KeePass), and is indeed fixed.
https://bugs.winehq.org/show_bug.cgi?id=37548
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |275ee4b376177f260693541a0f8 | |9f4e0c8c71847 Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #7 from Nikolay Sivov bunglehead@gmail.com --- Marking fixed.
https://bugs.winehq.org/show_bug.cgi?id=37548
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #8 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.31.
https://bugs.winehq.org/show_bug.cgi?id=37548
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://sourceforge.net/proj |https://web.archive.org/web |ects/keepass/files/KeePass |/20211119110259/https://net |2.x/2.28/KeePass-2.28-Setup |actuate.dl.sourceforge.net/ |.exe |project/keepass/KeePass%202 | |.x/2.28/KeePass-2.28-Setup. | |exe