Alexandre Julliard pushed to branch master at wine / wine
Commits: 42cef20d by Yuxuan Shui at 2025-07-14T22:05:03+02:00 ntdll/tests: Check the context of a user callback.
Check which non-volatile registers are set to their saved values before a user callback is entered.
- - - - - 52294396 by Yuxuan Shui at 2025-07-14T22:05:04+02:00 ntdll: Also restore rbp before calling user mode callback.
If wine dlls are built with frame pointers enabled, the frame pointer will be used during unwinding.
If we don't restore frame pointer before calling the user mode callback, then later when the unwinder encounters the user mode callback frame, it will set the frame pointer to something unexpected (depends on what it was during `call_user_mode_callback`). Then for the subsequent frame it adjusts the stack pointer based on the frame pointer, thus derailing the unwinding process.
- - - - -
2 changed files:
- dlls/ntdll/tests/exception.c - dlls/ntdll/unix/signal_x86_64.c
View it on GitLab: https://gitlab.winehq.org/wine/wine/-/compare/b2c340d72dcc7efdc717c75b385c09...