[Bug 46965] New: Stack overflow handling not working on x86_64
wine-bugs at winehq.org
wine-bugs at winehq.org
Fri Apr 5 14:11:03 CDT 2019
https://bugs.winehq.org/show_bug.cgi?id=46965
Bug ID: 46965
Summary: Stack overflow handling not working on x86_64
Product: Wine
Version: 4.4
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: kernel32
Assignee: wine-bugs at winehq.org
Reporter: elpochodelagente at gmail.com
Distribution: ---
Created attachment 64118
--> https://bugs.winehq.org/attachment.cgi?id=64118
stack overflow handling test case
The exception handler for stack overflows tries to use so much stack that it
passes the guard page, causes a second stack overflow, and results in a fatal
error. We found that this problem occurs in 64 bits but not in 32 bits, I guess
because the 64-bit processor contexts are much fatter.
Our use case involves setting up a vectored interrupt handler, so that the
stack overflow can be trapped and handled to continue doing something else. We
didn't try using a structured exception handler.
We were not sure of how to fix the problem as the root of the crash is too much
use of the stack, which the compiler owns. I was wondering if it was possible
to put the contexts in the heap, but wasn't sure as there might be restrictions
to exception handling code which I'm not aware of.
I attach a test case which works in 32-bits, and doesn't work in 64-bits.
$> i686-w64-mingw32-gcc -o stack-overflow-32.exe stack-overflow-1.c
$> wine stack-overflow-32.exe
exception! c00000fd
stack overflow
$> x86_64-w64-mingw32-gcc -o stack-overflow-64.exe stack-overflow-1.c
$> wine stack-overflow-64.exe
01ff:err:seh:setup_exception stack overflow 1552 bytes in thread 01ff eip
00007f3941e7a219 esp 0000000000131000 stack 0x130000-0x131000-0x330000
--
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