Skip to content

-Zpanic_abort_tests fails with benchmarks as test #73509

Closed
@Talanor

Description

@Talanor

Hi, I have a minimalistic test case where cargo test panics:

#![feature(test)]

#[cfg(test)]
mod tests {
    extern crate test;

    #[bench]
    fn noname(_b: &mut test::Bencher) {
    }
}

with a new project initialized with cargo init --lib and

export CARGO_INCREMENTAL=0
export RUSTFLAGS="-Zprofile -Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Zpanic_abort_tests -Cpanic=abort"
export RUSTDOCFLAGS="-Cpanic=abort"

as specified in the grcov readme
The error I get is :

$ cargo clean && cargo build && cargo test
   Compiling grcovtest v0.1.0 (XXXX/grcovtest)
    Finished dev [unoptimized + debuginfo] target(s) in 0.09s
   Compiling grcovtest v0.1.0 (XXXX/grcovtest)
    Finished test [unoptimized + debuginfo] target(s) in 0.19s
     Running target/debug/deps/grcovtest-4d053526558b4910

running 1 test
thread 'main' panicked at 'Cannot run dynamic test fn out-of-process', src/libtest/lib.rs:496:22
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: test failed, to rerun pass '--lib'

Caused by:
  process didn't exit successfully: `XXXX/grcovtest/target/debug/deps/grcovtest-4d053526558b4910` (signal: 6, SIGABRT: process abort signal)

and with --lib:

$ cargo clean && cargo build && cargo test --lib     
   Compiling grcovtest v0.1.0 (XXXX/grcovtest)
    Finished dev [unoptimized + debuginfo] target(s) in 0.09s
   Compiling grcovtest v0.1.0 (XXXX/grcovtest)
    Finished test [unoptimized + debuginfo] target(s) in 0.22s
     Running target/debug/deps/grcovtest-4d053526558b4910

running 1 test
thread 'main' panicked at 'Cannot run dynamic test fn out-of-process', src/libtest/lib.rs:496:22
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: test failed, to rerun pass '--lib'

Caused by:
  process didn't exit successfully: `XXXX/grcovtest/target/debug/deps/grcovtest-4d053526558b4910` (signal: 6, SIGABRT: process abort signal)

cargo test runs fine if I remove the -Cpanic=abort from the rustflags

My understanding is that it goes in https://github.com/rust-lang/rust/blob/master/src/libtest/lib.rs#L496 instead of https://github.com/rust-lang/rust/blob/master/src/libtest/lib.rs#L485 but I have no idea why or how to circumvent it.

Thank you.

Meta

$ rustc --version --verbose                                                                                              
rustc 1.46.0-nightly (feb3536eb 2020-06-09)
binary: rustc
commit-hash: feb3536eba10c2e4585d066629598f03d5ddc7c6
commit-date: 2020-06-09
host: x86_64-unknown-linux-gnu
release: 1.46.0-nightly
LLVM version: 10.0
Backtrace (with RUST_BACKTRACE=full)

$ cargo clean && cargo build && cargo test --lib
   Compiling grcovtest v0.1.0 (XXXX/grcovtest)
    Finished dev [unoptimized + debuginfo] target(s) in 0.10s
   Compiling grcovtest v0.1.0 (XXXX/grcovtest)
    Finished test [unoptimized + debuginfo] target(s) in 0.21s
     Running target/debug/deps/grcovtest-4d053526558b4910

running 1 test
thread 'main' panicked at 'Cannot run dynamic test fn out-of-process', src/libtest/lib.rs:496:22
stack backtrace:
   0:     0x557e9e6e00c5 - backtrace::backtrace::libunwind::trace::hc3f32ba24d88242a
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
   1:     0x557e9e6e00c5 - backtrace::backtrace::trace_unsynchronized::h1f075597100358e7
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
   2:     0x557e9e6e00c5 - std::sys_common::backtrace::_print_fmt::h4397782fec59f199
                               at src/libstd/sys_common/backtrace.rs:78
   3:     0x557e9e6e00c5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h39652f0242246c81
                               at src/libstd/sys_common/backtrace.rs:59
   4:     0x557e9e71c7fc - core::fmt::write::h540ac4a6a1232abc
                               at src/libcore/fmt/mod.rs:1076
   5:     0x557e9e6d2843 - std::io::Write::write_fmt::haa03b5883ee9e297
                               at src/libstd/io/mod.rs:1537
   6:     0x557e9e6e50e0 - std::sys_common::backtrace::_print::ha6d9bdf9f438acec
                               at src/libstd/sys_common/backtrace.rs:62
   7:     0x557e9e6e50e0 - std::sys_common::backtrace::print::ha1fba17a8e5f6bc7
                               at src/libstd/sys_common/backtrace.rs:49
   8:     0x557e9e6e50e0 - std::panicking::default_hook::{{closure}}::hbf9fcecd42c17d90
                               at src/libstd/panicking.rs:198
   9:     0x557e9e6e4e2c - std::panicking::default_hook::h39b8550780094336
                               at src/libstd/panicking.rs:218
  10:     0x557e9e6e5767 - std::panicking::rust_panic_with_hook::hc8b48ce48004c103
                               at src/libstd/panicking.rs:477
  11:     0x557e9e677a6e - std::panicking::begin_panic::h87c3ab8d799b6998
                               at /rustc/feb3536eba10c2e4585d066629598f03d5ddc7c6/src/libstd/panicking.rs:404
  12:     0x557e9e69ca87 - test::run_test::ha53930a547443f35
                               at src/libtest/lib.rs:496
  13:     0x557e9e687b2c - test::run_tests::h30f17a5394720b03
                               at src/libtest/lib.rs:299
  14:     0x557e9e687b2c - test::console::run_tests_console::h0afa09c552374ad5
                               at src/libtest/console.rs:280
  15:     0x557e9e697469 - test::test_main::hf995bbd176ccef4a
                               at src/libtest/lib.rs:120
  16:     0x557e9e698adb - test::test_main_static_abort::h9e5c26ff93351d49
                               at src/libtest/lib.rs:171
  17:     0x557e9e670466 - grcovtest::main::ha17a8198f2d29754
  18:     0x557e9e66f493 - std::rt::lang_start::{{closure}}::h2dfa0fe676b19ed6
                               at XXXX/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/libstd/rt.rs:67
  19:     0x557e9e6e5bf8 - std::rt::lang_start_internal::{{closure}}::hcf986077e2da8d6b
                               at src/libstd/rt.rs:52
  20:     0x557e9e6e5bf8 - std::panicking::try::do_call::h076edd10f2a91969
                               at src/libstd/panicking.rs:297
  21:     0x557e9e6e5bf8 - std::panicking::try::h54343dd1a9d830aa
                               at src/libstd/panicking.rs:274
  22:     0x557e9e6e5bf8 - std::panic::catch_unwind::h81799eb8afacafdd
                               at src/libstd/panic.rs:394
  23:     0x557e9e6e5bf8 - std::rt::lang_start_internal::hf4abd869024c3270
                               at src/libstd/rt.rs:51
  24:     0x557e9e66f40e - std::rt::lang_start::h37ccdd487e4b5e45
                               at XXXX/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/libstd/rt.rs:67
  25:     0x557e9e67049a - main
  26:     0x7f03850f1002 - __libc_start_main
  27:     0x557e9e66f2ce - _start
  28:                0x0 - <unknown>
error: test failed, to rerun pass '--lib'

Caused by:
  process didn't exit successfully: `XXXX/grcovtest/target/debug/deps/grcovtest-4d053526558b4910` (signal: 6, SIGABRT: process abort signal)

Metadata

Metadata

Assignees

Labels

A-libtestArea: `#[test]` / the `test` libraryC-bugCategory: This is a bug.requires-nightlyThis issue requires a nightly compiler in some way.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions