https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79341
--- Comment #58 from Florian Weimer <fw at gcc dot gnu.org> --- (In reply to Dominik Vogt from comment #57) > libsanitizer miscalculates the Pcs in the backtrace: > > #0 0x1000839 in NullDeref > #1 0x10006c1 in main > #2 0x3fff6e23069 in __libc_start_main > #3 0x100073d > > These are all odd addresses, pointing to the last byte of the previous > instruction. In case of null-deref-1.c that byte belongs to some > instrumentation code that is associated with line 11. The address decrement should only happen for call instructions. This thread has some background how this is supposed to work: https://gcc.gnu.org/ml/gcc/2016-10/msg00165.html https://gcc.gnu.org/ml/gcc/2016-10/msg00170.html Here's my attempt to clarify this for the x86-64 ABI: https://www.sourceware.org/ml/gnu-gabi/2016-q4/msg00012.html