CFI directives allow the context stored on the stack by raise_func_trampoline
to be used to unwind to any exception handlers as required when dispatching
an exception. As the dispatcher may change its input context in e.g.
BTCpuResetToConsistentState and these changes also need to be used when
unwinding make sure to pass this copy of the context to
KiUserExceptionDispatcher as opposed to the copy initially stored on the stack,
which is not taken into account when unwinding.
--
v2: ntdll: Avoid storing a second ctx copy in the aarch64 raise trampoline
ntdll: Add aarch64 DWARF register definitions.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3365
What about my suggestion from !3290? Something like the attached [patch](/uploads/86c669e3c725b4f009338e80379552f4/patch.diff) should make it work, but we'd probably need some adjustments to `setsid` heuristics as well.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3312#note_39734
rebased in order to get rid of error of compilation on mac
failure on amstream is still present: looks like a generic issue when exiting gstreamer in 32bit (can repro locally without that MR applied)
@julliard need to do something else?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3312#note_39733
CFI directives allow the context stored on the stack by raise_func_trampoline
to be used to unwind to any exception handlers as required when dispatching
an exception. As the dispatcher may change its input context in e.g.
BTCpuResetToConsistentState and these changes also need to be used when
unwinding make sure to pass this copy of the context to
KiUserExceptionDispatcher as opposed to the copy initially stored on the stack,
which is not taken into account when unwinding.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3365