https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79341
--- Comment #45 from Jakub Jelinek <jakub at gcc dot gnu.org> --- deep-stack-uaf*.C failure is presumably because the fast unwind (one that doesn't use .eh_frame unwind info) isn't working properly. But I'm afraid I don't know enough about s390{,x} to debug that. E.g. on following testcase with -O2 -fno-omit-frame-pointer I get: void foo (char *); int bar (char *p) { foo (p); return 1; } int baz (char *p) { char a[64]; foo (a); return 1; } stmg %r11,%r15,88(%r15) aghi %r15,-160 lgr %r11,%r15 brasl %r14,foo lg %r4,272(%r11) lghi %r2,1 lmg %r11,%r15,248(%r11) br %r4 for bar and stmg %r11,%r15,88(%r15) aghi %r15,-224 lgr %r11,%r15 la %r2,160(%r11) brasl %r14,foo lg %r4,336(%r11) lghi %r2,1 lmg %r11,%r15,312(%r11) br %r4 for baz. Frame pointer is $r15, stack pointer is $r11, if say in foo I ask for frame pointer, I can easily get at $r15 from the caller (foo or bar), but how do I get from there to the location where the outer function's $r15 is stored at? It is at offset 160+120 in one function and 224+120 in another (and the stored memory value doesn't tell much, it can be always computed from the memory location where it is stored. So, is non-unwind info backtrace not possible on s390{,x}? If yes, we should disable the fast unwinding and maybe enable -fasynchronous-unwind-tables by default on s390{,x}-linux at least when using -fsanitize=address?