On Wed Jul 2 01:42:35 2025 +0000, Paul Gofman wrote:
I think @gofman's suggestion is to restore all registers?
No, only non-volatile. As I understand what Alexandre suggests correctly, it is better to just restore those in call_user_mode_callback, in principle similar to what you did but:
- for all non-volatile regs;
- no need to pass additional parameters, you can get those right from frame.
I don't know if that is really necessary, but I personally would go for some test for RtlVirtualUnwind called from window procedure (with something like CreateWindow called from asm code to save non-volatile registers before / after), to make sure we are getting it right.
looks like I cannot unwind through user mode callback on native. unwind stops with a `STATUS_FATAL_USER_CALLBACK_EXCEPTION`.
i can capture stacktrace though, which is not working on wine without this rbp fix.