ABI rules are easier to remember when you watch the packet break.
Here is a deliberately malformed sketch:
; Windows-shaped setup, SysV-shaped callee
sub rsp, 40
mov dword ptr [rsp + 32], 5
mov ecx, 1
mov edx, 2
mov r8d, 3
mov r9d, 4
call five_intsEvery instruction is real. The call target can exist. The machine can execute the sequence. The packet is still wrong.
If the callee decodes the call under the System V AMD64 ABI, this is not a correct encoding of:
five_ints(1, 2, 3, 4, 5);For this all-integer function, a SysV AMD64 callee expects edi = a, esi = b, edx = c, ecx = d, and r8d = e. The sketch above was built from a Windows x64 mental model: ecx, edx, r8d, r9d, then a stack slot after the home area. The callee is not obligated to share that belief.
The concrete technical artifact is the wrong-register-schema bug. It does not require undefined source code or an invalid instruction. It requires a caller and callee that disagree about how local state has been serialized. A tracer may record the wrong argument. A hook may forward the wrong field. An FFI bridge may appear to work for one call shape and fail when the destination ABI changes.
The claim is broader than register tables: ABI bugs are malformed local serialization. The source call can be plausible while the binary packet is wrong. Hidden result storage, hidden receivers, stack home areas, varargs recovery state, and platform-specific preservation rules are all fields in that packet.
The boundary matters. The bug zoo is not a standards document, and a compiler listing is not the law. The disciplined rule is: ABI document as authority, generated assembly as receipt. A receipt can show what one compiler emitted for one target and one source shape. It cannot prove every compiler emits that sequence, every malformed call crashes, or every symptom looks the same.
The useful habit is adversarial but restrained: source belief, ABI field, broken packet, narrow symptom claim, evidence boundary.
Read the full essay on lospino.so: The Bugs That Make ABI Rules Memorable
Original essay published on lospino.so on 2026-06-02. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.

