Closed
Description
iff the crate contains two or more unit tests.
STR
$ cargo new --lib test-runner && cd $_
$ edit src/lib.rs && cat $_
#[test]
fn foo() {}
#[test]
fn bar() {}
$ RUSTFLAGS="-Z sanitizer=thread" cargo test --target x86_64-unknown-linux-gnu <<<
Running target/x86_64-unknown-linux-gnu/debug/deps/test_runner-d861d6557762b235
running 2 tests
test bar ... ok
test foo ... ok
==================
WARNING: ThreadSanitizer: data race (pid=30969)
Write of size 8 at 0x7c4c0000ed90 by thread T2:
#0 free $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:634 (test_runner-d861d6557762b235+0x0000000ce207)
#1 __rust_deallocate <null> (test_runner-d861d6557762b235+0x000000155663)
#2 _$LT$alloc..arc..Arc$LT$T$GT$$GT$::drop_slow::hffd2bcc3b04fe791 <null> (test_runner-d861d6557762b235+0x00000001b835)
#3 _$LT$alloc..arc..Arc$LT$T$GT$$GT$::drop_slow::hffd2bcc3b04fe791 <null> (test_runner-d861d6557762b235+0x00000001b835)
#4 drop::h62528215215ec760 <null> (test_runner-d861d6557762b235+0x000000029a65)
#5 drop::h62528215215ec760 <null> (test_runner-d861d6557762b235+0x000000029a65)
#6 _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::he23b8085b7ff608a <null> (test_runner-d861d6557762b235+0x00000002dc34)
#7 _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::he23b8085b7ff608a <null> (test_runner-d861d6557762b235+0x00000002dc34)
#8 std::sys::imp::thread::Thread::new::thread_start::hee5c0f50902195ab <null> (test_runner-d861d6557762b235+0x0000000bcacc)
#9 std::sys::imp::thread::Thread::new::thread_start::hee5c0f50902195ab <null> (test_runner-d861d6557762b235+0x0000000bcacc)
#10 __tsan_thread_start_func $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:892 (test_runner-d861d6557762b235+0x0000000caf0b)
#11 __tsan_thread_start_func $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:892 (test_runner-d861d6557762b235+0x0000000caf0b)
Previous atomic write of size 8 at 0x7c4c0000ed90 by main thread:
#0 __tsan_atomic64_fetch_sub $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cc:623 (test_runner-d861d6557762b235+0x0000001131b0)
#1 drop::h62528215215ec760 <null> (test_runner-d861d6557762b235+0x000000029a33)
#2 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288fd)
#3 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288fd)
#4 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288fd)
#5 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288fd)
#6 test::run_test::run_test_inner::h68ccb59ad7634829 <null> (test_runner-d861d6557762b235+0x000000060f65)
#7 test::run_test::run_test_inner::h68ccb59ad7634829 <null> (test_runner-d861d6557762b235+0x000000060f65)
#8 test::run_test::run_test_inner::h68ccb59ad7634829 <null> (test_runner-d861d6557762b235+0x000000060f65)
#9 test::run_test::hbe43efe8762b5fcb <null> (test_runner-d861d6557762b235+0x00000005f4bd)
#10 test::run_tests::h007db7d7a30e05b9 <null> (test_runner-d861d6557762b235+0x000000054a4a)
#11 test::run_tests_console::h51b8f804fcc03777 <null> (test_runner-d861d6557762b235+0x00000004db4c)
#12 test::test_main::h30f1de6986f689a9 <null> (test_runner-d861d6557762b235+0x0000000429d0)
#13 test::test_main_static::h2d9326de74ff96ef <null> (test_runner-d861d6557762b235+0x000000043fe3)
#14 test_runner::__test::main::h164d7dfa966cbb3f $PWD/src/lib.rs:1 (test_runner-d861d6557762b235+0x000000011362)
#15 std::panicking::try::do_call::hb1cd11518796216e <null> (test_runner-d861d6557762b235+0x0000000be876)
#16 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#17 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#18 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#19 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#20 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#21 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#22 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
Thread T2 'foo' (tid=30972, running) created by main thread at:
#0 pthread_create $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:902 (test_runner-d861d6557762b235+0x0000000cf546)
#1 std::sys::imp::thread::Thread::new::h59257a01c2b82abe <null> (test_runner-d861d6557762b235+0x0000000bc1ea)
#2 test::run_test::run_test_inner::h68ccb59ad7634829 <null> (test_runner-d861d6557762b235+0x000000060cd2)
#3 test::run_test::hbe43efe8762b5fcb <null> (test_runner-d861d6557762b235+0x00000005f4bd)
#4 test::run_test::hbe43efe8762b5fcb <null> (test_runner-d861d6557762b235+0x00000005f4bd)
#5 test::run_tests::h007db7d7a30e05b9 <null> (test_runner-d861d6557762b235+0x000000054a4a)
#6 test::run_tests_console::h51b8f804fcc03777 <null> (test_runner-d861d6557762b235+0x00000004db4c)
#7 test::test_main::h30f1de6986f689a9 <null> (test_runner-d861d6557762b235+0x0000000429d0)
#8 test::test_main_static::h2d9326de74ff96ef <null> (test_runner-d861d6557762b235+0x000000043fe3)
#9 test_runner::__test::main::h164d7dfa966cbb3f $PWD/src/lib.rs:1 (test_runner-d861d6557762b235+0x000000011362)
#10 std::panicking::try::do_call::hb1cd11518796216e <null> (test_runner-d861d6557762b235+0x0000000be876)
#11 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#12 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#13 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#14 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#15 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#16 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#17 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
SUMMARY: ThreadSanitizer: data race ($PWD/target/x86_64-unknown-linux-gnu/debug/deps/test_runner-d861d6557762b235+0x155663) in __rust_deallocate
==================
==================
WARNING: ThreadSanitizer: data race (pid=30969)
Write of size 8 at 0x7c580000ef40 by main thread:
#0 free $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:634 (test_runner-d861d6557762b235+0x0000000ce207)
#1 __rust_deallocate <null> (test_runner-d861d6557762b235+0x000000155663)
#2 _$LT$alloc..arc..Arc$LT$T$GT$$GT$::drop_slow::hc07f22e2b818fd5e <null> (test_runner-d861d6557762b235+0x00000001b234)
#3 _$LT$alloc..arc..Arc$LT$T$GT$$GT$::drop_slow::hc07f22e2b818fd5e <null> (test_runner-d861d6557762b235+0x00000001b234)
#4 drop::hd5322f45aa23e49d <null> (test_runner-d861d6557762b235+0x00000002c005)
#5 drop::hd5322f45aa23e49d <null> (test_runner-d861d6557762b235+0x00000002c005)
#6 drop::hb2fbb6e76af21657 <null> (test_runner-d861d6557762b235+0x00000002b98e)
#7 drop::hb2fbb6e76af21657 <null> (test_runner-d861d6557762b235+0x00000002b98e)
#8 drop::ha932b14572fc49af <null> (test_runner-d861d6557762b235+0x00000002ae22)
#9 test::run_tests::h007db7d7a30e05b9 <null> (test_runner-d861d6557762b235+0x0000000588b1)
#10 test::run_tests::h007db7d7a30e05b9 <null> (test_runner-d861d6557762b235+0x0000000588b1)
#11 test::run_tests::h007db7d7a30e05b9 <null> (test_runner-d861d6557762b235+0x0000000588b1)
#12 test::run_tests_console::h51b8f804fcc03777 <null> (test_runner-d861d6557762b235+0x00000004db4c)
#13 test::test_main::h30f1de6986f689a9 <null> (test_runner-d861d6557762b235+0x0000000429d0)
#14 test::test_main_static::h2d9326de74ff96ef <null> (test_runner-d861d6557762b235+0x000000043fe3)
#15 test_runner::__test::main::h164d7dfa966cbb3f $PWD/src/lib.rs:1 (test_runner-d861d6557762b235+0x000000011362)
#16 std::panicking::try::do_call::hb1cd11518796216e <null> (test_runner-d861d6557762b235+0x0000000be876)
#17 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#18 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#19 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#20 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#21 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#22 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#23 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
Previous atomic write of size 8 at 0x7c580000ef40 by thread T2:
#0 __tsan_atomic64_fetch_sub $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cc:623 (test_runner-d861d6557762b235+0x0000001131b0)
#1 drop::hd5322f45aa23e49d <null> (test_runner-d861d6557762b235+0x00000002bfd3)
#2 drop::hb2fbb6e76af21657 <null> (test_runner-d861d6557762b235+0x00000002b98e)
#3 drop::hb2fbb6e76af21657 <null> (test_runner-d861d6557762b235+0x00000002b98e)
#4 drop::hb2fbb6e76af21657 <null> (test_runner-d861d6557762b235+0x00000002b98e)
#5 drop::hb2fbb6e76af21657 <null> (test_runner-d861d6557762b235+0x00000002b98e)
#6 drop::ha932b14572fc49af <null> (test_runner-d861d6557762b235+0x00000002ae22)
#7 std::panicking::try::do_call::heac7d42b6d137ab0 <null> (test_runner-d861d6557762b235+0x00000001e7a7)
#8 std::panicking::try::do_call::heac7d42b6d137ab0 <null> (test_runner-d861d6557762b235+0x00000001e7a7)
#9 std::panicking::try::do_call::heac7d42b6d137ab0 <null> (test_runner-d861d6557762b235+0x00000001e7a7)
#10 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#11 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#12 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#13 _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::he23b8085b7ff608a <null> (test_runner-d861d6557762b235+0x00000002db21)
#14 _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::he23b8085b7ff608a <null> (test_runner-d861d6557762b235+0x00000002db21)
#15 std::sys::imp::thread::Thread::new::thread_start::hee5c0f50902195ab <null> (test_runner-d861d6557762b235+0x0000000bcacc)
#16 std::sys::imp::thread::Thread::new::thread_start::hee5c0f50902195ab <null> (test_runner-d861d6557762b235+0x0000000bcacc)
#17 std::sys::imp::thread::Thread::new::thread_start::hee5c0f50902195ab <null> (test_runner-d861d6557762b235+0x0000000bcacc)
#18 std::sys::imp::thread::Thread::new::thread_start::hee5c0f50902195ab <null> (test_runner-d861d6557762b235+0x0000000bcacc)
#19 __tsan_thread_start_func $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:892 (test_runner-d861d6557762b235+0x0000000caf0b)
#20 __tsan_thread_start_func $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:892 (test_runner-d861d6557762b235+0x0000000caf0b)
Thread T2 'foo' (tid=30972, running) created by main thread at:
#0 pthread_create $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:902 (test_runner-d861d6557762b235+0x0000000cf546)
#1 std::sys::imp::thread::Thread::new::h59257a01c2b82abe <null> (test_runner-d861d6557762b235+0x0000000bc1ea)
#2 test::run_test::run_test_inner::h68ccb59ad7634829 <null> (test_runner-d861d6557762b235+0x000000060cd2)
#3 test::run_test::hbe43efe8762b5fcb <null> (test_runner-d861d6557762b235+0x00000005f4bd)
#4 test::run_test::hbe43efe8762b5fcb <null> (test_runner-d861d6557762b235+0x00000005f4bd)
#5 test::run_tests::h007db7d7a30e05b9 <null> (test_runner-d861d6557762b235+0x000000054a4a)
#6 test::run_tests_console::h51b8f804fcc03777 <null> (test_runner-d861d6557762b235+0x00000004db4c)
#7 test::test_main::h30f1de6986f689a9 <null> (test_runner-d861d6557762b235+0x0000000429d0)
#8 test::test_main_static::h2d9326de74ff96ef <null> (test_runner-d861d6557762b235+0x000000043fe3)
#9 test_runner::__test::main::h164d7dfa966cbb3f $PWD/src/lib.rs:1 (test_runner-d861d6557762b235+0x000000011362)
#10 std::panicking::try::do_call::hb1cd11518796216e <null> (test_runner-d861d6557762b235+0x0000000be876)
#11 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#12 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#13 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#14 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#15 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#16 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#17 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
SUMMARY: ThreadSanitizer: data race ($PWD/target/x86_64-unknown-linux-gnu/debug/deps/test_runner-d861d6557762b235+0x155663) in __rust_deallocate
==================
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured
==================
WARNING: ThreadSanitizer: data race (pid=30969)
Write of size 8 at 0x7c540000ef60 by thread T2:
#0 free $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:634 (test_runner-d861d6557762b235+0x0000000ce207)
#1 __rust_deallocate <null> (test_runner-d861d6557762b235+0x000000155663)
#2 _$LT$alloc..arc..Arc$LT$T$GT$$GT$::drop_slow::hff346d8fec1237f8 <null> (test_runner-d861d6557762b235+0x00000009fbc4)
#3 _$LT$alloc..arc..Arc$LT$T$GT$$GT$::drop_slow::hff346d8fec1237f8 <null> (test_runner-d861d6557762b235+0x00000009fbc4)
#4 drop::h5f9d93ca09665cd2 <null> (test_runner-d861d6557762b235+0x0000000a395d)
#5 drop::h5f9d93ca09665cd2 <null> (test_runner-d861d6557762b235+0x0000000a395d)
#6 drop::h1a3c63fc24632ae0 <null> (test_runner-d861d6557762b235+0x0000000a34bf)
#7 drop::h1a3c63fc24632ae0 <null> (test_runner-d861d6557762b235+0x0000000a34bf)
#8 drop::h1a3c63fc24632ae0 <null> (test_runner-d861d6557762b235+0x0000000a34bf)
#9 std::sys::imp::fast_thread_local::destroy_value::hd0a16359cb28bafd <null> (test_runner-d861d6557762b235+0x0000000b9518)
#10 std::sys::imp::fast_thread_local::destroy_value::hd0a16359cb28bafd <null> (test_runner-d861d6557762b235+0x0000000b9518)
#11 std::sys::imp::fast_thread_local::destroy_value::hd0a16359cb28bafd <null> (test_runner-d861d6557762b235+0x0000000b9518)
#12 __GI___call_tls_dtors <null> (libc.so.6+0x000000035efe)
#13 __GI___call_tls_dtors <null> (libc.so.6+0x000000035efe)
#14 __GI___call_tls_dtors <null> (libc.so.6+0x000000035efe)
Previous atomic write of size 8 at 0x7c540000ef60 by main thread:
#0 __tsan_atomic64_fetch_sub $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cc:623 (test_runner-d861d6557762b235+0x0000001131b0)
#1 drop::h76fdafd6e6eb83b7 <null> (test_runner-d861d6557762b235+0x00000002a0fb)
#2 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288e9)
#3 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288e9)
#4 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288e9)
#5 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288e9)
#6 drop::h26c9032b0f649bf6 <null> (test_runner-d861d6557762b235+0x0000000288e9)
#7 test::run_test::run_test_inner::h68ccb59ad7634829 <null> (test_runner-d861d6557762b235+0x000000060f65)
#8 test::run_test::run_test_inner::h68ccb59ad7634829 <null> (test_runner-d861d6557762b235+0x000000060f65)
#9 test::run_test::hbe43efe8762b5fcb <null> (test_runner-d861d6557762b235+0x00000005f4bd)
#10 test::run_tests::h007db7d7a30e05b9 <null> (test_runner-d861d6557762b235+0x000000054a4a)
#11 test::run_tests_console::h51b8f804fcc03777 <null> (test_runner-d861d6557762b235+0x00000004db4c)
#12 test::test_main::h30f1de6986f689a9 <null> (test_runner-d861d6557762b235+0x0000000429d0)
#13 test::test_main_static::h2d9326de74ff96ef <null> (test_runner-d861d6557762b235+0x000000043fe3)
#14 test_runner::__test::main::h164d7dfa966cbb3f $PWD/src/lib.rs:1 (test_runner-d861d6557762b235+0x000000011362)
#15 std::panicking::try::do_call::hb1cd11518796216e <null> (test_runner-d861d6557762b235+0x0000000be876)
#16 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#17 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#18 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#19 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#20 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#21 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#22 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
Thread T2 'foo' (tid=30972, running) created by main thread at:
#0 pthread_create $RUST_SRC/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:902 (test_runner-d861d6557762b235+0x0000000cf546)
#1 std::sys::imp::thread::Thread::new::h59257a01c2b82abe <null> (test_runner-d861d6557762b235+0x0000000bc1ea)
#2 test::run_test::run_test_inner::h68ccb59ad7634829 <null> (test_runner-d861d6557762b235+0x000000060cd2)
#3 test::run_test::hbe43efe8762b5fcb <null> (test_runner-d861d6557762b235+0x00000005f4bd)
#4 test::run_test::hbe43efe8762b5fcb <null> (test_runner-d861d6557762b235+0x00000005f4bd)
#5 test::run_tests::h007db7d7a30e05b9 <null> (test_runner-d861d6557762b235+0x000000054a4a)
#6 test::run_tests_console::h51b8f804fcc03777 <null> (test_runner-d861d6557762b235+0x00000004db4c)
#7 test::test_main::h30f1de6986f689a9 <null> (test_runner-d861d6557762b235+0x0000000429d0)
#8 test::test_main_static::h2d9326de74ff96ef <null> (test_runner-d861d6557762b235+0x000000043fe3)
#9 test_runner::__test::main::h164d7dfa966cbb3f $PWD/src/lib.rs:1 (test_runner-d861d6557762b235+0x000000011362)
#10 std::panicking::try::do_call::hb1cd11518796216e <null> (test_runner-d861d6557762b235+0x0000000be876)
#11 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#12 __rust_maybe_catch_panic <null> (test_runner-d861d6557762b235+0x0000000c2363)
#13 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#14 std::rt::lang_start::h0661a76cd511ea2d <null> (test_runner-d861d6557762b235+0x0000000c0487)
#15 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#16 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
#17 main <null> (test_runner-d861d6557762b235+0x0000000113b7)
SUMMARY: ThreadSanitizer: data race ($PWD/target/x86_64-unknown-linux-gnu/debug/deps/test_runner-d861d6557762b235+0x155663) in __rust_deallocate
==================
ThreadSanitizer: reported 3 warnings
error: test failed
Meta
TODO Sanitizers are not yet in tree. (cf. #38699)