Skip to content

Investigate "no callback found" #1763

@RalfJung

Description

@RalfJung

#1761 managed to somehow trigger an ICE in Miri:

normalized stderr:
thread 'rustc' panicked at 'no callback found', src/thread.rs:714:55
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::option::expect_failed
   3: core::option::Option<T>::expect
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/library/core/src/option.rs:349:21
   4: miri::thread::EvalContextExt::run_timeout_callback
             at ./src/thread.rs:714:13
   5: miri::eval::eval_main::{{closure}}
             at ./src/eval.rs:230:21
   6: miri::eval::eval_main
             at ./src/eval.rs:218:38
   7: <miri::MiriCompilerCalls as rustc_driver::Callbacks>::after_analysis::{{closure}}
             at ./src/bin/miri.rs:53:40
   8: rustc_interface::passes::QueryContext::enter::{{closure}}
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_interface/src/passes.rs:755:42
   9: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_middle/src/ty/context.rs:1726:50
  10: rustc_middle::ty::context::tls::set_tlv
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_middle/src/ty/context.rs:1710:9
  11: rustc_middle::ty::context::tls::enter_context
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_middle/src/ty/context.rs:1726:9
  12: rustc_interface::passes::QueryContext::enter
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_interface/src/passes.rs:755:9
  13: <miri::MiriCompilerCalls as rustc_driver::Callbacks>::after_analysis
             at ./src/bin/miri.rs:35:9
  14: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
  15: rustc_span::with_source_map
  16: rustc_interface::interface::create_compiler_and_run
  17: scoped_tls::ScopedKey<T>::set
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.53.0-nightly (9b0edb7fd 2021-03-27) running on x86_64-apple-darwin

note: compiler flags: -Z miri-disable-isolation -C prefer-dynamic

query stack during panic:
end of query stack



The actual stderr differed from the expected stderr.
Actual stderr saved to /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/compiletestOPSWb6/concurrency/libc_pthread_cond.stage-id.stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args concurrency/libc_pthread_cond.rs`

error: 1 errors occurred comparing output.
status: exit status: 101
command: "/Users/runner/work/miri/miri/./target/x86_64-apple-darwin/release/miri" "tests/run-pass/concurrency/libc_pthread_cond.rs" "-L" "/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/compiletestOPSWb6" "--target=mips64-unknown-linux-gnuabi64" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/compiletestOPSWb6/concurrency/libc_pthread_cond.stage-id" "-A" "unused" "--edition" "2018" "-Dwarnings" "-Dunused" "--sysroot" "/Users/runner/Library/Caches/org.rust-lang.miri" "-Zmiri-disable-isolation" "-L" "/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/compiletestOPSWb6/concurrency/libc_pthread_cond.stage-id.aux"
stdout:
------------------------------------------

------------------------------------------
stderr:
------------------------------------------
thread 'rustc' panicked at 'no callback found', src/thread.rs:714:55
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::option::expect_failed
   3: core::option::Option<T>::expect
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/library/core/src/option.rs:349:21
   4: miri::thread::EvalContextExt::run_timeout_callback
             at ./src/thread.rs:714:13
   5: miri::eval::eval_main::{{closure}}
             at ./src/eval.rs:230:21
   6: miri::eval::eval_main
             at ./src/eval.rs:218:38
   7: <miri::MiriCompilerCalls as rustc_driver::Callbacks>::after_analysis::{{closure}}
             at ./src/bin/miri.rs:53:40
   8: rustc_interface::passes::QueryContext::enter::{{closure}}
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_interface/src/passes.rs:755:42
   9: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_middle/src/ty/context.rs:1726:50
  10: rustc_middle::ty::context::tls::set_tlv
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_middle/src/ty/context.rs:1710:9
  11: rustc_middle::ty::context::tls::enter_context
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_middle/src/ty/context.rs:1726:9
  12: rustc_interface::passes::QueryContext::enter
             at /Users/runner/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_interface/src/passes.rs:755:9
  13: <miri::MiriCompilerCalls as rustc_driver::Callbacks>::after_analysis
             at ./src/bin/miri.rs:35:9
  14: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
  15: rustc_span::with_source_map
  16: rustc_interface::interface::create_compiler_and_run
  17: scoped_tls::ScopedKey<T>::set
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.53.0-nightly (9b0edb7fd 2021-03-27) running on x86_64-apple-darwin

note: compiler flags: -Z miri-disable-isolation -C prefer-dynamic

query stack during panic:
end of query stack

------------------------------------------

test [ui] run-pass/concurrency/libc_pthread_cond.rs ... FAILED

The panic ultimately triggered here:

this.machine.threads.get_ready_callback().expect("no callback found");

I have not seen this before, so looks like it is unlikely but possible to happen. Would be good to at least come up with a plausible theory for a chain of events that lead here. Cc @vakaras

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions