[PATCH] D138095: [asan] Keep Itanium mangled names in global metadata
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 21 11:52:37 PST 2022
MaskRay added a comment.
In D138095#3941776 <https://reviews.llvm.org/D138095#3941776>, @gulfem wrote:
> We started seeing the following test failures.
>
> Failed Tests (8):
> AddressSanitizer-x86_64-linux :: TestCases/Linux/odr-violation.cpp
> AddressSanitizer-x86_64-linux :: TestCases/global-demangle.cpp
> AddressSanitizer-x86_64-linux :: TestCases/global-location-nodebug.cpp
> AddressSanitizer-x86_64-linux :: TestCases/global-location.cpp
> AddressSanitizer-x86_64-linux-dynamic :: TestCases/Linux/odr-violation.cpp
> AddressSanitizer-x86_64-linux-dynamic :: TestCases/global-demangle.cpp
> AddressSanitizer-x86_64-linux-dynamic :: TestCases/global-location-nodebug.cpp
> AddressSanitizer-x86_64-linux-dynamic :: TestCases/global-location.cpp
>
> https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/b8797107374001425041/overview
>
> The error is message from `global-demangle.cpp` is as the following:
>
> FAIL: AddressSanitizer-x86_64-linux :: TestCases/global-demangle.cpp (560 of 12394)
> ******************** TEST 'AddressSanitizer-x86_64-linux :: TestCases/global-demangle.cpp' FAILED ********************
> Script:
> --
> : 'RUN: at line 1'; /b/s/w/ir/x/w/staging/llvm_build/./bin/clang --driver-mode=g++ -fsanitize=address -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -O0 /b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp -o /b/s/w/ir/x/w/staging/llvm_build/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/test/asan/X86_64LinuxConfig/TestCases/Output/global-demangle.cpp.tmp && not /b/s/w/ir/x/w/staging/llvm_build/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/test/asan/X86_64LinuxConfig/TestCases/Output/global-demangle.cpp.tmp 2>&1 | FileCheck /b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp
> --
> Exit Code: 1
>
> Command Output (stderr):
> --
> /b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp:15:12: error: CHECK: expected string not found in input
> // CHECK: '{{.*}}XXX::YYY::ZZZ{{.*}}' {{.*}} of size 4
> ^
> <stdin>:8:56: note: scanning from here
> 0x561bdea237e6 is located 2 bytes after global variable '_ZN3XXX3YYY3ZZZE' defined in '/b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp' (0x561bdea237e0) of size 4
> ^
> <stdin>:8:165: note: possible intended match here
> 0x561bdea237e6 is located 2 bytes after global variable '_ZN3XXX3YYY3ZZZE' defined in '/b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp' (0x561bdea237e0) of size 4
> ^
>
> Input file: <stdin>
> Check file: /b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp
>
> -dump-input=help explains the following input dump.
>
> Input was:
> <<<<<<
> 1: =================================================================
> 2: ==315196==ERROR: AddressSanitizer: global-buffer-overflow on address 0x561bdea237e6 at pc 0x561bdea15d7e bp 0x7ffda4270b00 sp 0x7ffda4270af8
> 3: READ of size 1 at 0x561bdea237e6 thread T0
> 4: #0 0x561bdea15d7d in main /b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp:12:15
> 5: #1 0x7fe9bc8a1d09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09) (BuildId: 814ca45fb917d1b757796ff5f456237c263711c7)
> 6: #2 0x561bde940339 in _start (/b/s/w/ir/x/w/staging/llvm_build/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/test/asan/X86_64LinuxConfig/TestCases/Output/global-demangle.cpp.tmp+0x59339) (BuildId: 4e75c435413f2362)
> 7:
> 8: 0x561bdea237e6 is located 2 bytes after global variable '_ZN3XXX3YYY3ZZZE' defined in '/b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp' (0x561bdea237e0) of size 4
> check:15'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
> check:15'1 ? possible intended match
> 9: '_ZN3XXX3YYY3ZZZE' is ascii string 'abc'
> check:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 10: SUMMARY: AddressSanitizer: global-buffer-overflow /b/s/w/ir/x/w/llvm-llvm-project/compiler-rt/test/asan/TestCases/global-demangle.cpp:12:15 in main
> check:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 11: Shadow bytes around the buggy address:
> check:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 12: 0x561bdea23500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> check:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 13: 0x561bdea23580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> check:15'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> .
> .
> .
> >>>>>>
I'll appreciate some debugging since other sanitizer bots seem fine? Does your build bot not link asan tests with libc++abi or libstdc++ which provides `__cxa_demangle`? Then a mangled name is expected.
I vague remember that Fuchsia does things somewhat differently.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D138095/new/
https://reviews.llvm.org/D138095
More information about the llvm-commits
mailing list