Skip to content

Spurious failure in run-make/sanitizer-memory #46313

New issue

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

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

Already on GitHub? # to your account

Closed
kennytm opened this issue Nov 27, 2017 · 2 comments
Closed

Spurious failure in run-make/sanitizer-memory #46313

kennytm opened this issue Nov 27, 2017 · 2 comments
Labels
A-spurious Area: Spurious failures in builds (spuriously == for no apparent reason) C-tracking-issue Category: An issue tracking the progress of sth. like the implementation of an RFC

Comments

@kennytm
Copy link
Member

kennytm commented Nov 27, 2017

Symptom: on x86_64-gnu, the run-make/sanitizer-memory fails with exit code 2.

Example log
[01:11:45] failures:
[01:11:45] 
[01:11:45] ---- [run-make] run-make/sanitizer-memory stdout ----
[01:11:45] 	
[01:11:45] error: make failed
[01:11:45] status: exit code: 2
[01:11:45] command: "make"
[01:11:45] stdout:
[01:11:45] ------------------------------------------
[01:11:45] LD_LIBRARY_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu:/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools/x86_64-unknown-linux-gnu/release/deps:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib:" '/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc' --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu -L /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu  -g -Z sanitizer=memory -Z print-link-args uninit.rs | "/checkout/src/etc/cat-and-grep.sh" librustc_msan
[01:11:45] [[[ begin stdout ]]]
[01:11:45] �[90m"cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/uninit.uninit0.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/uninit.uninit1.rcgu.o" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/uninit" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/uninit.crate.allocator.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-a99e131203633592.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-d795c34fd7eb72c9.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-0f4b95d88e53e455.rlib" "-Wl,--whole-archive" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/rustc.C7xlHMKdVa9A/librustc_msan-92d1518a2bbae70e.rlib" "-Wl,--no-whole-archive" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_system-6d9370e956155877.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-f874e85b0fc1f5b8.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-c7758873e5bedec1.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-c9b8ae6d904bd621.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-c80c8268f013635d.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-6389cf691b0a8db6.rlib" "-Wl,-Bdynamic" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "pthread" "-l" "gcc_s" "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util" "-l" "util"
[01:11:45] �[0m
[01:11:45] [[[ end stdout ]]]
[01:11:45] /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/uninit 2>&1 | "/checkout/src/etc/cat-and-grep.sh" use-of-uninitialized-value
[01:11:45] [[[ begin stdout ]]]
[01:11:45] �[90mFATAL: Code 0x0100d5be8c70 is out of application range. Non-PIE build?
[01:11:45] FATAL: MemorySanitizer can not mmap the shadow memory.
[01:11:45] FATAL: Make sure to compile with -fPIE and to link with -pie.
[01:11:45] FATAL: Disabling ASLR is known to cause this error.
[01:11:45] FATAL: If running under GDB, try 'set disable-randomization off'.
[01:11:45] ==21730==Process memory map follows:
[01:11:45] 	0x0100d5bc4000-0x0100d5c93000	/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/uninit
[01:11:45] 	0x0100d5e93000-0x0100d5e98000	/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/uninit
[01:11:45] 	0x0100d5e98000-0x0100d5e9b000	/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/sanitizer-memory.stage2-x86_64-unknown-linux-gnu/uninit
[01:11:45] 	0x0100d5e9b000-0x0100d8301000	
[01:11:45] 	0x7f2f79ec0000-0x7f2f7a212000	
[01:11:45] 	0x7f2f7a212000-0x7f2f7a31a000	/lib/x86_64-linux-gnu/libm-2.23.so
[01:11:45] 	0x7f2f7a31a000-0x7f2f7a519000	/lib/x86_64-linux-gnu/libm-2.23.so
[01:11:45] 	0x7f2f7a519000-0x7f2f7a51a000	/lib/x86_64-linux-gnu/libm-2.23.so
[01:11:45] 	0x7f2f7a51a000-0x7f2f7a51b000	/lib/x86_64-linux-gnu/libm-2.23.so
[01:11:45] 	0x7f2f7a51b000-0x7f2f7a6db000	/lib/x86_64-linux-gnu/libc-2.23.so
[01:11:45] 	0x7f2f7a6db000-0x7f2f7a8db000	/lib/x86_64-linux-gnu/libc-2.23.so
[01:11:45] 	0x7f2f7a8db000-0x7f2f7a8df000	/lib/x86_64-linux-gnu/libc-2.23.so
[01:11:45] 	0x7f2f7a8df000-0x7f2f7a8e1000	/lib/x86_64-linux-gnu/libc-2.23.so
[01:11:45] 	0x7f2f7a8e1000-0x7f2f7a8e5000	
[01:11:45] 	0x7f2f7a8e5000-0x7f2f7a8fb000	/lib/x86_64-linux-gnu/libgcc_s.so.1
[01:11:45] 	0x7f2f7a8fb000-0x7f2f7aafa000	/lib/x86_64-linux-gnu/libgcc_s.so.1
[01:11:45] 	0x7f2f7aafa000-0x7f2f7aafb000	/lib/x86_64-linux-gnu/libgcc_s.so.1
[01:11:45] 	0x7f2f7aafb000-0x7f2f7ab13000	/lib/x86_64-linux-gnu/libpthread-2.23.so
[01:11:45] 	0x7f2f7ab13000-0x7f2f7ad12000	/lib/x86_64-linux-gnu/libpthread-2.23.so
[01:11:45] 	0x7f2f7ad12000-0x7f2f7ad13000	/lib/x86_64-linux-gnu/libpthread-2.23.so
[01:11:45] 	0x7f2f7ad13000-0x7f2f7ad14000	/lib/x86_64-linux-gnu/libpthread-2.23.so
[01:11:45] 	0x7f2f7ad14000-0x7f2f7ad18000	
[01:11:45] 	0x7f2f7ad18000-0x7f2f7ad1f000	/lib/x86_64-linux-gnu/librt-2.23.so
[01:11:45] 	0x7f2f7ad1f000-0x7f2f7af1e000	/lib/x86_64-linux-gnu/librt-2.23.so
[01:11:45] 	0x7f2f7af1e000-0x7f2f7af1f000	/lib/x86_64-linux-gnu/librt-2.23.so
[01:11:45] 	0x7f2f7af1f000-0x7f2f7af20000	/lib/x86_64-linux-gnu/librt-2.23.so
[01:11:45] 	0x7f2f7af20000-0x7f2f7af23000	/lib/x86_64-linux-gnu/libdl-2.23.so
[01:11:45] 	0x7f2f7af23000-0x7f2f7b122000	/lib/x86_64-linux-gnu/libdl-2.23.so
[01:11:45] 	0x7f2f7b122000-0x7f2f7b123000	/lib/x86_64-linux-gnu/libdl-2.23.so
[01:11:45] 	0x7f2f7b123000-0x7f2f7b124000	/lib/x86_64-linux-gnu/libdl-2.23.so
[01:11:45] 	0x7f2f7b124000-0x7f2f7b14a000	/lib/x86_64-linux-gnu/ld-2.23.so
[01:11:45] 	0x7f2f7b336000-0x7f2f7b347000	
[01:11:45] 	0x7f2f7b347000-0x7f2f7b349000	
[01:11:45] 	0x7f2f7b349000-0x7f2f7b34a000	/lib/x86_64-linux-gnu/ld-2.23.so
[01:11:45] 	0x7f2f7b34a000-0x7f2f7b34b000	/lib/x86_64-linux-gnu/ld-2.23.so
[01:11:45] 	0x7f2f7b34b000-0x7f2f7b34c000	
[01:11:45] 	0x7ffcca182000-0x7ffcca1a4000	[stack]
[01:11:45] 	0x7ffcca1b5000-0x7ffcca1b7000	[vvar]
[01:11:45] 	0x7ffcca1b7000-0x7ffcca1b9000	[vdso]
[01:11:45] 	0xffffffffff600000-0xffffffffff601000	[vsyscall]
[01:11:45] ==21730==End of process memory map.
[01:11:45] �[0m
[01:11:45] [[[ end stdout ]]]
[01:11:45] �[1;31mError: cannot match: use-of-uninitialized-value�[0m
[01:11:45] Makefile:6: recipe for target 'all' failed
[01:11:45] 
[01:11:45] ------------------------------------------
[01:11:45] stderr:
[01:11:45] ------------------------------------------
[01:11:45] warning: unused variable: `y`
[01:11:45]   --> uninit.rs:15:9
[01:11:45]    |
[01:11:45] 15 |     let y = xs[0] + xs[1];
[01:11:45]    |         ^
[01:11:45]    |
[01:11:45]    = note: #[warn(unused_variables)] on by default
[01:11:45]    = note: to avoid this warning, consider using `_y` instead
[01:11:45] 
[01:11:45] make: *** [all] Error 1
[01:11:45] 
[01:11:45] ------------------------------------------
[01:11:45] 
[01:11:45] thread '[run-make] run-make/sanitizer-memory' panicked at 'explicit panic', /checkout/src/tools/compiletest/src/runtest.rs:2570:8
[01:11:45] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[01:11:45] 
[01:11:45] 
[01:11:45] failures:
[01:11:45]     [run-make] run-make/sanitizer-memory
[01:11:45] 
[01:11:45] test result: �[31mFAILED�(B�[m. 167 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out

Affected PRs:

Potentially relevant: golang/go#12898

@kennytm kennytm added A-spurious Area: Spurious failures in builds (spuriously == for no apparent reason) C-tracking-issue Category: An issue tracking the progress of sth. like the implementation of an RFC labels Nov 27, 2017
@arielb1
Copy link
Contributor

arielb1 commented Dec 18, 2017

My Debian does not exhibit this spurious failure, even after 10000 executions.

HOWEVER, Some googling had found google/sanitizers#856

The breaking change is also present in Ubuntu kernel 4.4.0-93

From https://api.travis-ci.org/v3/job/318251396/log.txt

Runtime kernel version: 4.4.0-93-generic

Could someone with easy access to the alleged kernel check that it is indeed broken?

@tmiasko
Copy link
Contributor

tmiasko commented Aug 29, 2020

This issue should be closed. The test case had been rewritten and there haven't been any failures for quite some time.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-spurious Area: Spurious failures in builds (spuriously == for no apparent reason) C-tracking-issue Category: An issue tracking the progress of sth. like the implementation of an RFC
Projects
None yet
Development

No branches or pull requests

4 participants