Using ASan/UBSan with LTO leads to printing of only hex offsets in the stacktraces. The issue seems to be fixed in gcc-9 on Eoan, but it doesnt work with bionic gcc-8.
There is a GCC bug for this, which was fixed an year ago, but it is not there in bionin gcc-8.
I have attached a simple test program to demonstrate the problem:
With bionic, gcc-8 gives:
Direct leak of 4 byte(s) in 1 object(s) allocated from:
#0 0x7f35f6106f00 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:86
#1 0x56193a9fb7f6 in leak (/home/asachan/leak+0x7f6)
#2 0x56193a9fb812 in main (/home/asachan/leak+0x812)
#3 0x7f35f5c49b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
With Eoan, gcc-9 gives:
Direct leak of 4 byte(s) in 1 object(s) allocated from:
#0 0x7fb3baa7eae8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dae8)
#1 0x55c775c2e16a in leak /home/asachan/kachra/leak.c:7
#2 0x55c775c2e186 in main /home/asachan/kachra/leak.c:13
#3 0x7fb3ba7a71e2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x271e2)
The fix seems to be in libbacktrace, which gets picked up in libsanitizer as well:
Using ASan/UBSan with LTO leads to printing of only hex offsets in the stacktraces. The issue seems to be fixed in gcc-9 on Eoan, but it doesnt work with bionic gcc-8.
There is a GCC bug for this, which was fixed an year ago, but it is not there in bionin gcc-8.
https:/ /gcc.gnu. org/bugzilla/ show_bug. cgi?id= 78063
I have attached a simple test program to demonstrate the problem:
With bionic, gcc-8 gives:
Direct leak of 4 byte(s) in 1 object(s) allocated from: malloc ../../. ./../src/ libsanitizer/ asan/asan_ malloc_ linux.cc: 86 asachan/ leak+0x7f6) asachan/ leak+0x812) 64-linux- gnu/libc. so.6+0x21b96)
#0 0x7f35f6106f00 in __interceptor_
#1 0x56193a9fb7f6 in leak (/home/
#2 0x56193a9fb812 in main (/home/
#3 0x7f35f5c49b96 in __libc_start_main (/lib/x86_
With Eoan, gcc-9 gives:
Direct leak of 4 byte(s) in 1 object(s) allocated from: 64-linux- gnu/libasan. so.5+0x10dae8) kachra/ leak.c: 7 kachra/ leak.c: 13 64-linux- gnu/libc. so.6+0x271e2)
#0 0x7fb3baa7eae8 in malloc (/lib/x86_
#1 0x55c775c2e16a in leak /home/asachan/
#2 0x55c775c2e186 in main /home/asachan/
#3 0x7fb3ba7a71e2 in __libc_start_main (/lib/x86_
The fix seems to be in libbacktrace, which gets picked up in libsanitizer as well:
https:/ /gcc.gnu. org/viewcvs/ gcc?view= revision& revision= 268663