Skip to content

in memory sanitizer builds -stdlib=libc++ is linking against /usr/local/lib/libc++.a not /usr/lib/libc++.a #6427

@caolanm

Description

@caolanm

/usr/local/bin/compile has...

if [[ $SANITIZER_FLAGS = sanitize=memory ]]
then
cp -R /usr/msan/lib/* /usr/lib/

echo 'Building without MSan instrumented libraries.'
fi

so for memory sanitizer builds the /usr/msan/lib/libc++.a is copied to /usr/lib but clang++ -stdlib=libc++ ends up linking against the one in /usr/local/lib

root@5d4ceecbe072:~# strace -f clang++ -stdlib=libc++ ./demo.cxx 2>&1 | grep libc++.a
[pid 717148] stat("/usr/lib/gcc/x86_64-linux-gnu/9/libc++.a", 0x7ffcc35a1a60) = -1 ENOENT (No such file or directory)
[pid 717148] openat(AT_FDCWD, "/usr/lib/gcc/x86_64-linux-gnu/9/libc++.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 717148] stat("/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib64/libc++.a", 0x7ffcc35a1a60) = -1 ENOENT (No such file or directory)
[pid 717148] openat(AT_FDCWD, "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib64/libc++.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 717148] stat("/lib/x86_64-linux-gnu/libc++.a", 0x7ffcc35a1a60) = -1 ENOENT (No such file or directory)
[pid 717148] openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc++.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 717148] stat("/lib/../lib64/libc++.a", 0x7ffcc35a1a60) = -1 ENOENT (No such file or directory)
[pid 717148] openat(AT_FDCWD, "/lib/../lib64/libc++.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 717148] stat("/usr/lib/x86_64-linux-gnu/libc++.a", 0x7ffcc35a1a60) = -1 ENOENT (No such file or directory)
[pid 717148] openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libc++.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 717148] stat("/usr/lib/../lib64/libc++.a", 0x7ffcc35a1a60) = -1 ENOENT (No such file or directory)
[pid 717148] openat(AT_FDCWD, "/usr/lib/../lib64/libc++.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 717148] stat("/usr/local/bin/../lib/libc++.a", {st_mode=S_IFREG|0644, st_size=2622420, ...}) = 0
[pid 717148] openat(AT_FDCWD, "/usr/local/bin/../lib/libc++.a", O_RDONLY) = 8
[pid 717148] write(2, "/usr/local/bin/../lib/libc++.a(c"..., 59/usr/local/bin/../lib/libc++.a(cxa_exception_storage.cpp.o)) = 59
[pid 717148] write(2, "/usr/local/bin/../lib/libc++.a(c"..., 59/usr/local/bin/../lib/libc++.a(cxa_exception_storage.cpp.o)) = 59
[pid 717148] write(2, "/usr/local/bin/../lib/libc++.a(c"..., 59/usr/local/bin/../lib/libc++.a(cxa_exception_storage.cpp.o)) = 59
[pid 717148] write(2, "/usr/local/bin/../lib/libc++.a(c"..., 59/usr/local/bin/../lib/libc++.a(cxa_exception_storage.cpp.o)) = 59

I suspect this is happening since a2be91d seeing as libreoffice, libigl and librawspeed started failing with similar errors in their msan builds around the 10th Sep

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions