I created the minimal example C++ program and wanted to try out clang's address sanitizer:
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
I compile with below it works fine.
c++ -g -O1 -fno-omit-frame-pointer main.cpp -o main
When I compile with the sanitize flag on, I get a segmentation fault.
c++ -g -O1 -fno-omit-frame-pointer -fsanitize=address main.cpp -o main
My clang version is:
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
I am using libstdc++11 (the GCC standard library implementation): version GLIBCXX_3.4.30 and GLIBC_2.4
I also have the strace here:
... // before this line, there are many other similar lines that document finding the other .so libraries (like the libstdc++ for example)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libmd.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=47472, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 49384, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa6b5e65000
mmap(0x7fa6b5e67000, 28672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fa6b5e67000
mmap(0x7fa6b5e6e000, 8192, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x7fa6b5e6e000
mmap(0x7fa6b5e70000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7fa6b5e70000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b5e63000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b5e60000
arch_prctl(ARCH_SET_FS, 0x7fa6b5e607c0) = 0
set_tid_address(0x7fa6b5e60a90) = 52936
set_robust_list(0x7fa6b5e60aa0, 24) = 0
rseq(0x7fa6b5e61160, 0x20, 0, 0x53053053) = 0
mprotect(0x7fa6b5a15000, 16384, PROT_READ) = 0
mprotect(0x7fa6b5e70000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5e87000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5eab000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5ea5000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5eeb000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5bfb000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5e9d000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5ec1000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5ef0000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5ef5000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5f17000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5ffe000, 4096, PROT_READ) = 0
mprotect(0x7fa6b5e1b000, 45056, PROT_READ) = 0
mprotect(0x7fa6b6225000, 4096, PROT_READ) = 0
mprotect(0x55fb938db000, 4096, PROT_READ) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b5e5e000
mprotect(0x7fa6b6278000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7fa6b6229000, 85399) = 0
readlink("/proc/self/exe", "/home/ivan/Documents/Clang/main", 4096) = 31
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6277000
open("/proc/self/cmdline", O_RDONLY) = 3
read(3, "./main\0", 4096) = 7
read(3, "", 4089) = 0
close(3) = 0
munmap(0x7fa6b6277000, 4096) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6277000
open("/proc/self/environ", O_RDONLY) = 3
read(3, "BAMF_DESKTOP_FILE_HINT=/var/lib/"..., 4096) = 4096
close(3) = 0
munmap(0x7fa6b6277000, 4096) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b623c000
open("/proc/self/environ", O_RDONLY) = 3
read(3, "BAMF_DESKTOP_FILE_HINT=/var/lib/"..., 8192) = 4715
read(3, "", 3477) = 0
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b623a000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6238000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6236000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6277000
open("/proc/self/maps", O_RDONLY) = 3
read(3, "55fb937c9000-55fb937e7000 r--p 0"..., 4096) = 3985
read(3, "7fa6b5e8a000-7fa6b5e8e000 r--p 0"..., 111) = 111
close(3) = 0
munmap(0x7fa6b6277000, 4096) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6234000
open("/proc/self/maps", O_RDONLY) = 3
read(3, "55fb937c9000-55fb937e7000 r--p 0"..., 8192) = 3985
read(3, "7fa6b5e8a000-7fa6b5e8e000 r--p 0"..., 4207) = 4059
read(3, "7fa6b5ef7000-7fa6b5ef9000 rw-p 0"..., 148) = 148
close(3) = 0
munmap(0x7fa6b6234000, 8192) = 0
mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6232000
open("/proc/self/maps", O_RDONLY) = 3
read(3, "55fb937c9000-55fb937e7000 r--p 0"..., 16384) = 3985
read(3, "7fa6b5e8a000-7fa6b5e8e000 r--p 0"..., 12399) = 4059
read(3, "7fa6b5ef7000-7fa6b5ef9000 rw-p 0"..., 8340) = 2706
read(3, "", 5634) = 0
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6277000
open("/proc/self/maps", O_RDONLY) = 3
read(3, "55fb937c9000-55fb937e7000 r--p 0"..., 4096) = 3985
read(3, "7fa6b5e8a000-7fa6b5e8e000 r--p 0"..., 111) = 111
close(3) = 0
munmap(0x7fa6b6277000, 4096) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b6230000
open("/proc/self/maps", O_RDONLY) = 3
read(3, "55fb937c9000-55fb937e7000 r--p 0"..., 8192) = 3985
read(3, "7fa6b5e8a000-7fa6b5e8e000 r--p 0"..., 4207) = 4059
read(3, "7fa6b5ef7000-7fa6b5ef9000 rw-p 0"..., 148) = 148
close(3) = 0
munmap(0x7fa6b6230000, 8192) = 0
mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b622e000
open("/proc/self/maps", O_RDONLY) = 3
read(3, "55fb937c9000-55fb937e7000 r--p 0"..., 16384) = 3985
read(3, "7fa6b5e8a000-7fa6b5e8e000 r--p 0"..., 12399) = 4059
read(3, "7fa6b5ef7000-7fa6b5ef9000 rw-p 0"..., 8340) = 2706
read(3, "", 5634) = 0
close(3) = 0
munmap(0x7fa6b622e000, 16384) = 0
mmap(NULL, 3727360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b5472000
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV (core dumped) +++
[1] 52933 segmentation fault (core dumped) strace ./main
I am pretty new to this, and not sure where to start looking. If any of you more experienced can advise me where to start digging, I would be grateful.