Looking at [0]: 'int code' should be 'long code', otherwise you won't be able to extract the full 64-bit address from it. I don't know how this works out for the BSDs -- maybe they just don't pass the address in there?
[0]: https://git.savannah.gnu.org/gitweb/?p=libsigsegv.git;a=blob;f=src/fault-hurd.h And also, since glibc commit d865ff74ba096d016c9b1542a4e3d305169c9e55 (2020), the Hurd supports POSIX SA_SIGINFO / siginfo / ucontext interface, and the old one is considered legacy / deprecated. You should be able to get the faulting address from si->si_addr, and the stack pointer from uc->uc_stack.ss_sp. Sergey