I've taken a lengthy look at the output of /usr/bin/qemu-aarch64 -cpu max -d in_asm,strace /usr/bin/zypper --version after building qemu-aarch64 with capstone (disassembly) support. The last thing zypper does is apparently a throw() from a function called _ZN6Zypper12shellCleanupEv@@Base(). From there, the code enters __cxa_throw() (libstdc++6.so) _Unwind_RaiseException (libgcc_s1.so) After that, the code moves around in a code segment that (according to objdump) belongs to _Unwind_GetTextRelBase(). At some point I see a call to pthread_once() __enable_execute_stack() At this point the last system call of zypper is observed, futex(0x00000055035500a4,FUTEX_PRIVATE_FLAG|FUTEX_WAKE,2147483647,NULL,NULL,0) = 0 apparently as part of pthread_once(). After that, the code jumps around in libgcc_s1.so after _Unwind_GetTextRelBase(), again. Finally I see a call chain _Unwind_GetTextRelBase _Unwind_find_FDE __GI__dl_find_object The SIGSEGV then happens in _Unwind_GetTextRelBase, probably because _dl_find_object() returned an invalid object: 0x550352e300: f9418ea0 ldr x0, [x21, #0x318] 0x550352e304: 52822d01 movz w1, #0x1168_dl_find_object 0x550352e308: f9418aa5 ldr x5, [x21, #0x310] 0x550352e30c: 72ba5001 movk w1, #0xd280, lsl #16 0x550352e310: b9400002 ldr w2, [x0] <==== BAD VALUE IN x0 0x550352e314: 6b01005f cmp w2, w1 0x550352e318: 54000b21 b.ne #0x550352e47c --- SIGSEGV {si_signo=SIGSEGV, si_code=1, si_addr=NULL} --- The bad x0 value had been found by Fabiano Rosas with gdb. So something is going wrong in the unwind code that follows the throw(). But the details are still shady, and it is unclear how this relates to the pauth feature of qemu-aarch64.