11Running GenMC Verification...
2- error: unsupported operation: Could not lock Mutex, which may indicate a deadlock. (GenMC mode does not fully support deadlock detection yet).
2+ error: the evaluated program deadlocked
33 --> RUSTLIB/std/src/sync/poison/mutex.rs:LL:CC
44 |
55LL | self.inner.lock();
6- | ^ unsupported operation occurred here
6+ | ^^^^^^^^^^^^^^^^^ this thread got stuck here
7+ |
8+ = note: BACKTRACE on thread `unnamed-ID`:
9+ = note: inside `std::sync::Mutex::<u64>::lock` at RUSTLIB/std/src/sync/poison/mutex.rs:LL:CC
10+ note: inside closure
11+ --> tests/genmc/fail/intercept/mutex_deadlock.rs:LL:CC
12+ |
13+ LL | let mut y = Y.lock().unwrap();
14+ | ^^^^^^^^
15+ = note: inside `<std::boxed::Box<{closure@tests/genmc/fail/intercept/mutex_deadlock.rs:LL:CC}> as std::ops::FnOnce<()>>::call_once` at RUSTLIB/alloc/src/boxed.rs:LL:CC
16+ note: inside `genmc::spawn_pthread_closure::thread_func::<{closure@tests/genmc/fail/intercept/mutex_deadlock.rs:LL:CC}>`
17+ --> tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC
18+ |
19+ LL | f();
20+ | ^^^
21+
22+ error: the evaluated program deadlocked
23+ --> tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC
24+ |
25+ LL | if unsafe { libc::pthread_join(thread_id, std::ptr::null_mut()) } != 0 {
26+ | ^ this thread got stuck here
27+ |
28+ = note: BACKTRACE:
29+ = note: inside `genmc::join_pthread` at tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC
30+ note: inside closure
31+ --> tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC
32+ |
33+ LL | let _ = thread_ids.map(|id| join_pthread(id));
34+ | ^^^^^^^^^^^^^^^^
35+ = note: inside closure at RUSTLIB/core/src/ops/try_trait.rs:LL:CC
36+ = note: inside `<std::iter::Map<std::array::drain::Drain<'_, u64>, {closure@std::ops::try_trait::NeverShortCircuit<()>::wrap_mut_1<u64, {closure@tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC}>::{closure#0}}> as std::iter::traits::unchecked_iterator::UncheckedIterator>::next_unchecked` at RUSTLIB/core/src/iter/adapters/map.rs:LL:CC
37+ = note: inside closure at RUSTLIB/core/src/array/mod.rs:LL:CC
38+ = note: inside `std::array::try_from_fn_erased::<(), std::ops::try_trait::NeverShortCircuit<()>, {closure@std::array::try_from_trusted_iterator::next<std::ops::try_trait::NeverShortCircuit<()>, std::iter::Map<std::array::drain::Drain<'_, u64>, {closure@std::ops::try_trait::NeverShortCircuit<()>::wrap_mut_1<u64, {closure@tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC}>::{closure#0}}>>::{closure#0}}>` at RUSTLIB/core/src/array/mod.rs:LL:CC
39+ = note: inside `std::array::try_from_fn::<std::ops::try_trait::NeverShortCircuit<()>, 2, {closure@std::array::try_from_trusted_iterator::next<std::ops::try_trait::NeverShortCircuit<()>, std::iter::Map<std::array::drain::Drain<'_, u64>, {closure@std::ops::try_trait::NeverShortCircuit<()>::wrap_mut_1<u64, {closure@tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC}>::{closure#0}}>>::{closure#0}}>` at RUSTLIB/core/src/array/mod.rs:LL:CC
40+ = note: inside `std::array::try_from_trusted_iterator::<(), std::ops::try_trait::NeverShortCircuit<()>, 2, std::iter::Map<std::array::drain::Drain<'_, u64>, {closure@std::ops::try_trait::NeverShortCircuit<()>::wrap_mut_1<u64, {closure@tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC}>::{closure#0}}>>` at RUSTLIB/core/src/array/mod.rs:LL:CC
41+ = note: inside closure at RUSTLIB/core/src/array/mod.rs:LL:CC
42+ = note: inside `std::array::drain::drain_array_with::<u64, std::ops::try_trait::NeverShortCircuit<[(); 2]>, 2, {closure@std::array::<impl [u64; 2]>::try_map<std::ops::try_trait::NeverShortCircuit<()>, {closure@std::ops::try_trait::NeverShortCircuit<()>::wrap_mut_1<u64, {closure@tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC}>::{closure#0}}>::{closure#0}}>` at RUSTLIB/core/src/array/drain.rs:LL:CC
43+ = note: inside `std::array::<impl [u64; 2]>::try_map::<std::ops::try_trait::NeverShortCircuit<()>, {closure@std::ops::try_trait::NeverShortCircuit<()>::wrap_mut_1<u64, {closure@tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC}>::{closure#0}}>` at RUSTLIB/core/src/array/mod.rs:LL:CC
44+ = note: inside `std::array::<impl [u64; 2]>::map::<{closure@tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC}, ()>` at RUSTLIB/core/src/array/mod.rs:LL:CC
45+ note: inside `genmc::join_pthreads::<TAG>`
46+ --> tests/genmc/fail/intercept/../../../utils/genmc.rs:LL:CC
47+ |
48+ LL | let _ = thread_ids.map(|id| join_pthread(id));
49+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50+ note: inside `miri_start`
51+ --> tests/genmc/fail/intercept/mutex_deadlock.rs:LL:CC
52+ |
53+ LL | join_pthreads([t0, t1]);
54+ | ^^^^^^^^^^^^^^^^^^^^^^^
55+
56+ error: the evaluated program deadlocked
57+ --> RUSTLIB/std/src/sync/poison/mutex.rs:LL:CC
58+ |
59+ LL | self.inner.lock();
60+ | ^ this thread got stuck here
761 |
8- = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
962 = note: BACKTRACE on thread `unnamed-ID`:
1063 = note: inside `std::sync::Mutex::<u64>::lock` at RUSTLIB/std/src/sync/poison/mutex.rs:LL:CC
1164note: inside closure
@@ -22,5 +75,5 @@ LL | f();
2275
2376note: add `-Zmiri-genmc-print-genmc-output` to MIRIFLAGS to see the detailed GenMC error report
2477
25- error: aborting due to 1 previous error
78+ error: aborting due to 3 previous errors
2679
0 commit comments