ntdll: Fix various bugs RtlUnwindEx on x86_64.
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.
dlls/ntdll/signal_x86_64.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 2087 bytes
Desc: not available
More information about the wine-patches