daltenty added a comment.
On AIX and PPC LE Linux after this change we are seeing invalid accesses when
the backend asserts/fatal_errors. Looks like the driver and CC1 now share some
global TimerGroup state that points to Timers which got created by CC1 but
didn't get cleanup after the assert. Reported as:
https://bugs.llvm.org/show_bug.cgi?id=45164
Example failure:
./bin/clang ./llvm-project/clang/test/CodeGenObjC/illegal-UTF8.m -S -target
powerpc-ibm-aix
...
fatal error: error in backend: Unhandled linkage when mapping linkage to
StorageClass.
Stack dump:
...
*******************
AddressSanitizer:DEADLYSIGNAL
=================================================================
==37262==ERROR: AddressSanitizer: SEGV on unknown address 0x000010715768 (pc
0x3fffb7cdb2c4 bp 0x3e1fb764cdb0 sp 0x3fffffffc460 T0)
==37262==The signal is caused by a UNKNOWN memory access.
#0 0x3fffb7cdb2c0 in std::basic_string<char, std::char_traits<char>,
std::allocator<char> >::basic_string(std::string const&)
(/lib64/libstdc++.so.6+0x11b2c0)
#1 0x16ca75c0 in PrintRecord
/home/daltenty/llvm/dev/llvm-project/llvm/include/llvm/Support/Timer.h:180:21
#2 0x16ca75c0 in construct<llvm::TimerGroup::PrintRecord,
llvm::TimeRecord &, std::basic_string<char> &, std::basic_string<char> &>
/opt/rh/devtoolset-7/root/usr/lib/gcc/ppc64le-redhat-linux/7/../../../../include/c++/7/ext/new_allocator.h:136:23
#3 0x16ca75c0 in construct<llvm::TimerGroup::PrintRecord,
llvm::TimeRecord &, std::basic_string<char> &, std::basic_string<char> &>
/opt/rh/devtoolset-7/root/usr/lib/gcc/ppc64le-redhat-linux/7/../../../../include/c++/7/bits/alloc_traits.h:475:8
#4 0x16ca75c0 in void std::vector<llvm::TimerGroup::PrintRecord,
std::allocator<llvm::TimerGroup::PrintRecord>
>::_M_realloc_insert<llvm::TimeRecord&, std::string&,
std::string&>(__gnu_cxx::__normal_iterator<llvm::TimerGroup::PrintRecord*,
std::vector<llvm::TimerGroup::PrintRecord,
std::allocator<llvm::TimerGroup::PrintRecord> > >, llvm::TimeRecord&,
std::string&, std::string&)
/opt/rh/devtoolset-7/root/usr/lib/gcc/ppc64le-redhat-linux/7/../../../../include/c++/7/bits/vector.tcc:415:4
#5 0x16ca2220 in emplace_back<llvm::TimeRecord &, std::basic_string<char>
&, std::basic_string<char> &>
/opt/rh/devtoolset-7/root/usr/lib/gcc/ppc64le-redhat-linux/7/../../../../include/c++/7/bits/vector.tcc:105:4
#6 0x16ca2220 in llvm::TimerGroup::prepareToPrintList(bool)
/home/daltenty/llvm/dev/llvm-project/llvm/lib/Support/Timer.cpp:359:19
#7 0x16ca2498 in llvm::TimerGroup::print(llvm::raw_ostream&, bool)
/home/daltenty/llvm/dev/llvm-project/llvm/lib/Support/Timer.cpp:373:5
#8 0x16ca2a4c in llvm::TimerGroup::printAll(llvm::raw_ostream&)
/home/daltenty/llvm/dev/llvm-project/llvm/lib/Support/Timer.cpp:391:9
#9 0x107f1940 in main
/home/daltenty/llvm/dev/llvm-project/clang/tools/driver/driver.cpp:535:3
#10 0x3fffb79b497c in generic_start_main.isra.0 (/lib64/libc.so.6+0x2497c)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib64/libstdc++.so.6+0x11b2c0) in
std::basic_string<char, std::char_traits<char>, std::allocator<char>
>::basic_string(std::string const&)
==37262==ABORTING
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D69825/new/
https://reviews.llvm.org/D69825
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits