http://bugs.winehq.org/show_bug.cgi?id=25310
Summary: Bugs in RtlUnwindEx Product: Wine Version: unspecified Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: mkoegler@auto.tuwien.ac.at
MSDN (http://msdn.microsoft.com/en-us/library/ms680615(VS.85).aspx) describes the passed context as scratch-space, not something that the application has to initialize. The wine implemetation expect a valid context.
Looking at the debug output, it is also clearly visible, that the wine implementation unwinds the stack pointer one stack frame to far.
The attached patch fixes these problems: * RtlUnwindEx is called via DEFINE_REGS_ENTRYPOINT and the new context is used as starting point. * Stay at the same context, if the target stack frame has been reached.
There have been more infomation about the internal of RtlUnwindEx published: http://www.nynaeve.net/?p=113
The patch make RtlUnwindEx more compilant with this description - it is still incomplete.