https://bugs.winehq.org/show_bug.cgi?id=49556
Bug ID: 49556 Summary: 0024:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7bc88e20 Product: Wine-staging Version: 5.12 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: kenorb@gmail.com CC: leslie_alistair@hotmail.com, z.figura12@gmail.com Distribution: ---
I'm using filever.exe inside Docker container which in some configuration crashes on run, and some works.
Initially I've managed to make it not crash with: - wine-5.9 (Staging) - wine-5.12 (Staging)
But after using wine-5.12 a while, I couldn't make it not crash.
When running: wine filever.exe terminal64.exe it works fine.
When running: wine filever.exe /v terminal64.exe it shows the following output and crashes:
--a-- W32 APP - 5.0.0.2515 shp 56,960,616 07-03-2020 terminal64.exe Language 0x0000 (English) CharSet 0x04b0 Unicode ... SubType: 00000000 FileDate: 00000000:00000000 wine: Unhandled page fault on read access to 65786526 at address 7BC88E20 (thread 0024), starting debugger... 0024:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7bc88e20
$ winedbg filever.exe /v terminal64.exe 007c:err:ntoskrnl:ZwLoadDriver failed to create driver L"\Registry\Machine\System\CurrentControlSet\Services\wineusb": c0000142 WineDbg starting on pid 00c8 0x000000007bcd18a5: ret Wine-dbg>bt Backtrace: =>0 0x000000007bcd18a5 (0x000000000031ffd8) 1 0x000000007b449622 EntryPoint+0x23651() in kernel32 (0x000000000031ffec) Wine-dbg>bt all 0x000000007bcd18a5: ret Backtracing for thread 00cc in process 00c8 (C:\windows\filever.exe): Backtrace: =>0 0x000000007bcd18a5 (0x000000000031ffd8) 1 0x000000007b449622 EntryPoint+0x23651() in kernel32 (0x000000000031ffec) 0x000000007bcd18a5: ret
Here are the reproducible steps using Docker container (which I'm using):
1. Pull and run Docker container:
local$ docker run -it --entrypoint /bin/bash ea31337/ea-tester
2. Inside Docker, install required binaries (e.g. filever and platform binary to check).
docker$ /opt/scripts/eval.sh install_mt 5.0.0.2515
3. Go to downloaded platform dir.
$ cd ~/.wine/drive_c/MetaTrader\ 5/
4. This command should work:
$ wine filever.exe terminal64.exe --a-- W32 APP - 5.0.0.2515 shp 56,960,616 07-03-2020 terminal64.exe
5. This command crashes at the end:
$ wine filever.exe /v terminal64.exe ... FileDate: 00000000:00000000 wine: Unhandled page fault on read access to 65786526 at address 7BC88E20 (thread 0024), starting debugger... 0024:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7bc88e20
6. Although works for another binaries:
$ wine filever.exe /v metatester64.exe (no errors at the end) $ wine filever.exe /v metaeditor64.exe (no errors at the end)
7. To run under debugger, run:
$ winedbg filever.exe /v terminal64.exe
Xvfb is already running, run: "export DISPLAY=:0" to access display.
The filever.exe is the same which is included with WindowsXP-KB838079-SupportTools (https://github.com/EA31337/EA-Tester/releases/download/4.x/WindowsXP-KB83807...). If you download from the link, you can use cabextract to extract that binary (e.g. cabextract -F support.cab *.exe && cabextract -F filever.exe *.cab && install -v filever.exe ~/.wine/drive_c/windows).
I was using filever.exe quiet often in my scripts and never had this issue.
Any clues if that's the Wine bug or filever.exe?
https://bugs.winehq.org/show_bug.cgi?id=49556
--- Comment #1 from bronek kenorb@gmail.com --- Furthermore, since filever.exe prints the output correctly, but crashes (it reads starting debugger, but it never starts the debugger), I'm either interested in getting the output or forcing to disable Wine debugger like in https://unix.stackexchange.com/q/596552
So here is the working example: $ wine filever /v metaeditor64.exe 2>/dev/null | grep -w ProductVersion ProductVersion 5.0.0.2361
But the one which is crashing, it doesn't produce output on the stdout for some reason.
So this produces output without grep: $ wine filever /v terminal64.exe 2>/dev/null ... ProductVersion 5.0.0.2361 ...
But it doesn't work with grep anymore: $ wine filever /v terminal64.exe | grep -w ProductVersion wine: Unhandled page fault on write access to 6C616E6D at address 7BC284E6 (thread 00b0), starting debugger... 00b0:err:seh:NtRaiseException Unhandled exception code c0000005 flags 0 addr 0x7bc284e6
I expect to grep the output, despite the crash (since it's shown without grep). I've checked and the app output is sent to stdout, but adding pipe, it doesn't produce the output anymore. It's very confusing.
The binary which I'm testing, can be downloaded from: https://github.com/EA31337/MT-Platforms/releases/download/5.0.0.2361/mt-5.0....
https://bugs.winehq.org/show_bug.cgi?id=49556
Anya animegirl@stronzi.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |animegirl@stronzi.org
https://bugs.winehq.org/show_bug.cgi?id=49556
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, regression Summary|0024:err:seh:raise_exceptio |filever.exe /v crashes when |n Unhandled exception code |opening Metatrader 5's |c0000005 flags 0 addr |terminal64.exe |0x7bc88e20 |
--- Comment #2 from Austin English austinenglish@gmail.com --- I can reproduce in wine-development (without docker), but for me, it was introduced between 5.2/5.3, by: 55dc4fce990f9edd3c216e5dff15a7918308b03f is the first bad commit commit 55dc4fce990f9edd3c216e5dff15a7918308b03f Author: Alexandre Julliard julliard@winehq.org Date: Thu Feb 20 16:02:36 2020 +0100
kernelbase: Use external NLS files for Unicode composition.
Signed-off-by: Alexandre Julliard julliard@winehq.org
dlls/kernelbase/locale.c | 128 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 115 insertions(+), 13 deletions(-) bisect run success
git bisect script: #!/bin/bash export WINE=~/wine-git/wine
cd /tmp/tmp.vDNMV0VUId/MetaTrader\ 5/ || exit 125 "$WINE" filever /v filever.exe terminal64.exe 2>&1 | grep 'starting debugger' ret="$?"
case "$ret" in 0) echo "crashed"; exit 1;; 1) echo "no crash"; exit 0;; *) echo "unknown ret $ret" ; exit 125;; esac
can you try wine-development-5.9 and see if it crashes?
https://bugs.winehq.org/show_bug.cgi?id=49556
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |austinenglish@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=49556
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |NOTOURBUG Status|UNCONFIRMED |RESOLVED Keywords|regression |
--- Comment #3 from Alexandre Julliard julliard@winehq.org --- That's an app bug. Instead of using GetFileVersionInfoSizeA(), it hardcodes a buffer size of 1.5 times the resource size for the version info. This is how it used to work in NT4, but Wine is using the XP+ algorithm, which requires twice the resource size.
This leads to heap corruption, which may or may not crash depending on the allocation patterns. I expect that the same heap corruption happens on Windows
= XP.
https://bugs.winehq.org/show_bug.cgi?id=49556
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #4 from Zebediah Figura z.figura12@gmail.com --- Closing as NOTOURBUG.