On Mon, 8 Jan 2024 at 13:36, Berthold Stoeger <bstoe...@mail.tuwien.ac.at> wrote: > > > here's the disassembled code and yes, it does call terminate... > > Does it? At least not directly as far as I can see. I reckon this is the > exception handler?
Yeah, that branch to ___clang_call_terminate is not in the regular code path, that is just stp x20, x19, [sp, #-32]! stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 ldr x0, [x0] bl _objc_msgSend$dealloc mov x0, x19 ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 ret which is basically just that "dealloc" call (plus flame setup, save x18/x19, save old FP/LR). So that bl ___clang_call_terminate is unreachable by normal means, but presumably is there thanks to some exception handler thing, which is presumably also why the frame has been undone and this function isn't shown in the backtrace. Bad form, but hey, exception handling is messy. Linus _______________________________________________ subsurface mailing list subsurface@subsurface-divelog.org http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface