Skip to content

SanitizerCommon-ubsan-*-Linux :: sanitizer_coverage_*.cpp test failures (glibc 2.39?) #82883

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mgorny opened this issue Feb 24, 2024 · 3 comments · Fixed by #84231
Closed

SanitizerCommon-ubsan-*-Linux :: sanitizer_coverage_*.cpp test failures (glibc 2.39?) #82883

mgorny opened this issue Feb 24, 2024 · 3 comments · Fixed by #84231

Comments

@mgorny
Copy link
Member

mgorny commented Feb 24, 2024

Three new failures while testing HEAD as of 60a904b. I'm guessing this is because I've upgraded my system to glibc 2.39.

FAIL: SanitizerCommon-ubsan-i386-Linux :: sanitizer_coverage_symbolize.cpp (5102 of 7007)
******************** TEST 'SanitizerCommon-ubsan-i386-Linux :: sanitizer_coverage_symbolize.cpp' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 6: DIR=/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
+ DIR=/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
RUN: at line 7: rm -rf $DIR
+ rm -rf /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
RUN: at line 8: mkdir -p $DIR
+ mkdir -p /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
RUN: at line 9: cd $DIR
+ cd /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
RUN: at line 10: /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/lib/llvm/19/bin/clang  --driver-mode=g++ -gline-tables-only -fsanitize=undefined  -m32 -funwind-tables  -I/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test -ldl -O0 -fsanitize-coverage=trace-pc-guard /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp -o /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp
+ /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/lib/llvm/19/bin/clang --driver-mode=g++ -gline-tables-only -fsanitize=undefined -m32 -funwind-tables -I/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test -ldl -O0 -fsanitize-coverage=trace-pc-guard /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp -o /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp
RUN: at line 11: env UBSAN_OPTIONS=coverage=1 /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp 2>&1 | FileCheck /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp
+ env UBSAN_OPTIONS=coverage=1 /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp
+ FileCheck /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp
/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp:28:11: error: CHECK: expected string not found in input
// CHECK: SanitizerCoverage: ./sanitizer_coverage_symbolize.{{.*}}.sancov: 2 PCs written
          ^
<stdin>:1:5: note: scanning from here
main
    ^
<stdin>:4:1: note: possible intended match here
SanitizerCoverage: ./sanitizer_coverage_symbolize.cpp.tmp.248595.sancov: 4 PCs written
^

Input file: <stdin>
Check file: /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: main 
check:28'0         X error: no match found
            2: foo 
check:28'0     ~~~~
            3: foo 
check:28'0     ~~~~
            4: SanitizerCoverage: ./sanitizer_coverage_symbolize.cpp.tmp.248595.sancov: 4 PCs written 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'1     ?                                                                                       possible intended match
>>>>>>

--

********************
FAIL: SanitizerCommon-ubsan-x86_64-Linux :: sanitizer_coverage_inline8bit_counter_default_impl.cpp (5323 of 7007)
******************** TEST 'SanitizerCommon-ubsan-x86_64-Linux :: sanitizer_coverage_inline8bit_counter_default_impl.cpp' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 6: /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/lib/llvm/19/bin/clang  --driver-mode=g++ -gline-tables-only -fsanitize=undefined  -m64 -funwind-tables  -I/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test -ldl -O0 /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline8bit_counter_default_impl.cpp -fsanitize-coverage=inline-8bit-counters,pc-table -o /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp
+ /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/lib/llvm/19/bin/clang --driver-mode=g++ -gline-tables-only -fsanitize=undefined -m64 -funwind-tables -I/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test -ldl -O0 /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline8bit_counter_default_impl.cpp -fsanitize-coverage=inline-8bit-counters,pc-table -o /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp
RUN: at line 7: rm -f /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-counters /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-pcs
+ rm -f /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-counters /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-pcs
RUN: at line 8: env UBSAN_OPTIONS="cov_8bit_counters_out=/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-counters cov_pcs_out=/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-pcs verbosity=1"  /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp 2>&1 | FileCheck /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline8bit_counter_default_impl.cpp
+ env 'UBSAN_OPTIONS=cov_8bit_counters_out=/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-counters cov_pcs_out=/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-pcs verbosity=1' /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp
+ FileCheck /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline8bit_counter_default_impl.cpp
RUN: at line 11: wc -c /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-counters | grep "^2 "
+ wc -c /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_inline8bit_counter_default_impl.cpp.tmp-counters
+ grep '^2 '

--

********************
FAIL: SanitizerCommon-ubsan-x86_64-Linux :: sanitizer_coverage_symbolize.cpp (5327 of 7007)
******************** TEST 'SanitizerCommon-ubsan-x86_64-Linux :: sanitizer_coverage_symbolize.cpp' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 6: DIR=/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
+ DIR=/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
RUN: at line 7: rm -rf $DIR
+ rm -rf /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
RUN: at line 8: mkdir -p $DIR
+ mkdir -p /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
RUN: at line 9: cd $DIR
+ cd /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp_workdir
RUN: at line 10: /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/lib/llvm/19/bin/clang  --driver-mode=g++ -gline-tables-only -fsanitize=undefined  -m64 -funwind-tables  -I/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test -ldl -O0 -fsanitize-coverage=trace-pc-guard /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp -o /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp
+ /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/lib/llvm/19/bin/clang --driver-mode=g++ -gline-tables-only -fsanitize=undefined -m64 -funwind-tables -I/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test -ldl -O0 -fsanitize-coverage=trace-pc-guard /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp -o /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp
RUN: at line 11: env UBSAN_OPTIONS=coverage=1 /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp 2>&1 | FileCheck /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp
+ FileCheck /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp
+ env UBSAN_OPTIONS=coverage=1 /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt_build/test/sanitizer_common/ubsan-x86_64-Linux/Output/sanitizer_coverage_symbolize.cpp.tmp
/var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp:28:11: error: CHECK: expected string not found in input
// CHECK: SanitizerCoverage: ./sanitizer_coverage_symbolize.{{.*}}.sancov: 2 PCs written
          ^
<stdin>:1:5: note: scanning from here
main
    ^
<stdin>:4:1: note: possible intended match here
SanitizerCoverage: ./sanitizer_coverage_symbolize.cpp.tmp.253095.sancov: 4 PCs written
^

Input file: <stdin>
Check file: /var/tmp/portage/sys-libs/compiler-rt-sanitizers-19.0.0_pre20240224/work/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cpp

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: main 
check:28'0         X error: no match found
            2: foo 
check:28'0     ~~~~
            3: foo 
check:28'0     ~~~~
            4: SanitizerCoverage: ./sanitizer_coverage_symbolize.cpp.tmp.253095.sancov: 4 PCs written 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:28'1     ?                                                                                       possible intended match
>>>>>>

--

********************

CC @MaskRay

@mgorny
Copy link
Member Author

mgorny commented Feb 24, 2024

Also affects 18.1.0rc3, so it'd be nice to either have a last minute fix there, or an XFAIL.

@tstellar tstellar moved this from Needs Triage to Needs Fix in LLVM Release Status Feb 26, 2024
MaskRay added a commit that referenced this issue Mar 6, 2024
glibc 2.39 added `nonnull` attribute to most libio functions accepting a
`FILE*` parameter, including fprintf[1]. The -fsanitize=undefined mode
checks the argument to fprintf and has extra counters, not expected by
two tests. Specify -fno-sanitize=nonnull-attribute to make the two tests
pass.

Fix #82883

[1]: https://sourceware.org/git/?p=glibc.git;a=commit;h=64b1a44183a3094672ed304532bedb9acc707554

Pull Request: #84231
@github-project-automation github-project-automation bot moved this from Needs Fix to Done in LLVM Release Status Mar 6, 2024
@MaskRay
Copy link
Member

MaskRay commented Mar 6, 2024

/cherry-pick c3acbf6

@MaskRay MaskRay reopened this Mar 6, 2024
@github-project-automation github-project-automation bot moved this from Done to Needs Triage in LLVM Release Status Mar 6, 2024
llvmbot pushed a commit to llvmbot/llvm-project that referenced this issue Mar 6, 2024
glibc 2.39 added `nonnull` attribute to most libio functions accepting a
`FILE*` parameter, including fprintf[1]. The -fsanitize=undefined mode
checks the argument to fprintf and has extra counters, not expected by
two tests. Specify -fno-sanitize=nonnull-attribute to make the two tests
pass.

Fix llvm#82883

[1]: https://sourceware.org/git/?p=glibc.git;a=commit;h=64b1a44183a3094672ed304532bedb9acc707554

Pull Request: llvm#84231

(cherry picked from commit c3acbf6)
@llvmbot llvmbot closed this as completed Mar 6, 2024
@github-project-automation github-project-automation bot moved this from Needs Triage to Done in LLVM Release Status Mar 6, 2024
@llvmbot
Copy link
Member

llvmbot commented Mar 6, 2024

/pull-request #84239

llvmbot pushed a commit to llvmbot/llvm-project that referenced this issue Mar 11, 2024
glibc 2.39 added `nonnull` attribute to most libio functions accepting a
`FILE*` parameter, including fprintf[1]. The -fsanitize=undefined mode
checks the argument to fprintf and has extra counters, not expected by
two tests. Specify -fno-sanitize=nonnull-attribute to make the two tests
pass.

Fix llvm#82883

[1]: https://sourceware.org/git/?p=glibc.git;a=commit;h=64b1a44183a3094672ed304532bedb9acc707554

Pull Request: llvm#84231

(cherry picked from commit c3acbf6)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging a pull request may close this issue.

4 participants