Jinoh Kang (@iamahuman) commented about dlls/user32/tests/msg.c:
+ eptr->ContextRecord->Eip++; /* cancel EIP rewinding */ +#elif defined(__x86_64__) + if ((ULONG_PTR)eptr->ExceptionRecord->ExceptionAddress == eptr->ContextRecord->Rip + 1) + eptr->ContextRecord->Rip++; /* cancel RIP rewinding */ +#endif + } + timer_exc_phase = TIMER_EXCEPTION_CONTINUE; + return EXCEPTION_CONTINUE_EXECUTION; + } + + return EXCEPTION_CONTINUE_SEARCH; +} + +static void dispatch_message_ansi_handle_exception(const MSG *msg, PVECTORED_EXCEPTION_HANDLER handler) +{ + void *cookie = AddVectoredExceptionHandler(TRUE, handler); VEH precedes user32 DispatchMessage's SEH, which means this will always catch the exception regardless of the value of `UOI_TIMERPROC_EXCEPTION_SUPPRESSION`.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/3454#note_58264