ntdll: Fix various bugs RtlUnwindEx on x86_64.

Sebastian Lackner sebastian at fds-team.de
Thu Apr 2 22:00:40 CDT 2015

Currently exception handling on x86_64 only works (most of the time) because there are two bugs compensating each other. The attempt to fix unwinding in http://source.winehq.org/git/wine.git/commit/a777676bc48d4575a0bafb40bad1fe85d269e352 was the wrong approach, and only fixed it for dwarf handlers (but not for native language handlers).

To be compatible with RtlVirtualUnwind, the function dwarf_virtual_unwind should return the frame pointer before stack unwinding. Besides reverting the commit above, we additionally have to make sure that the EstablisherFrame is restored after running any builtin handlers.

Fixes: https://bugs.winehq.org/show_bug.cgi?id=34254

 dlls/ntdll/signal_x86_64.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ntdll-Fix-various-bugs-RtlUnwindEx-on-x86_64.patch
Type: text/x-patch
Size: 2087 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20150403/482ce6b4/attachment.bin>

More information about the wine-patches mailing list