https://bugs.winehq.org/show_bug.cgi?id=34254
Sebastian Lackner sebastian@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |julliard@winehq.org
--- Comment #5 from Sebastian Lackner sebastian@fds-team.de --- As it turns out this issue is technically a regression. My patch in comment #4 is exactly the opposite of a change which was committed a couple of years ago:
--- snip --- commit a777676bc48d4575a0bafb40bad1fe85d269e352 Author: Alexandre Julliard julliard@winehq.org Date: Fri Mar 30 14:42:55 2012 +0200
ntdll: Also call the unwind handler for the target frame. --- snip ---
Unfortunately I wasn't able to find out why this change was introduced. It seems to violate all available documentations that further unwind handlers are called after the first one with EH_TARGET_UNWIND. I assume that the idea was to run one more round of unwind handlers (why?), but this can't work because there is no relation between Rsp and EstablisherFrames. Rsp points to the location after the return address was removed, but EstablisherFrame is smaller and points to the location of the local variables / saved registers.
Adding Alexandre as CC, maybe he remembers why this change was necessary.