Jinoh Kang (@iamahuman) commented about dlls/ntdll/unix/thread.c:
if (flags & CONTEXT_I386_CONTROL) { to->flags |= SERVER_CTX_CONTROL; - to->ctl.x86_64_regs.rbp = from->Ebp; to->ctl.x86_64_regs.rsp = from->Esp; to->ctl.x86_64_regs.rip = from->Eip; to->ctl.x86_64_regs.cs = from->SegCs; to->ctl.x86_64_regs.ss = from->SegSs; to->ctl.x86_64_regs.flags = from->EFlags; + + to->integer.x86_64_regs.rbp = from->Ebp;
If only `SERVER_CTX_CONTROL` is set, the server would ignore this rbp value since `SERVER_CTX_INTEGER` is NOT set. This goes on similarly with other changes. Perhaps we should move the translation logic to wineserver instead, so it can do the actual mapping itself. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8317#note_106559