The PC printed in sanitizer stack traces is consistently off by 1 byte or 1 instruction from the value printed by GDB and the value returned by the __builtin_return_address intrinsic function. The difference in the PC for the active frame when a stack trace is being generated in response to a signal causes lookups in DWARF line number programs to return the wrong line number for certain programs.
This change fixes the problem with the lookups and makes the sanitizer print PC values that are consistent with both GDB and __builtin_return_address.
I frankly don't remember is there is a reason to keep StackTrace <= 16 bytes.
Let me check later today.