Auto merge of #150565 - RalfJung:miri, r=RalfJung
miri subtree update
Subtree update of `miri` to cb3bfe8ef4.
Created using https://github.com/rust-lang/josh-sync.
r? `@ghost`
This commit is contained in:
commit
fcd630976c
257 changed files with 2127 additions and 1770 deletions
|
|
@ -152,7 +152,7 @@ case $HOST_TARGET in
|
||||||
# Partially supported targets (tier 2)
|
# Partially supported targets (tier 2)
|
||||||
BASIC="empty_main integer heap_alloc libc-mem vec string btreemap" # ensures we have the basics: pre-main code, system allocator
|
BASIC="empty_main integer heap_alloc libc-mem vec string btreemap" # ensures we have the basics: pre-main code, system allocator
|
||||||
UNIX="hello panic/panic panic/unwind concurrency/simple atomic libc-mem libc-misc libc-random env num_cpus" # the things that are very similar across all Unixes, and hence easily supported there
|
UNIX="hello panic/panic panic/unwind concurrency/simple atomic libc-mem libc-misc libc-random env num_cpus" # the things that are very similar across all Unixes, and hence easily supported there
|
||||||
TEST_TARGET=aarch64-linux-android run_tests_minimal $BASIC $UNIX time hashmap random thread sync concurrency epoll eventfd
|
TEST_TARGET=aarch64-linux-android run_tests_minimal $BASIC $UNIX time hashmap random thread sync concurrency epoll eventfd prctl
|
||||||
TEST_TARGET=wasm32-unknown-unknown run_tests_minimal no_std empty_main wasm # this target doesn't really have std
|
TEST_TARGET=wasm32-unknown-unknown run_tests_minimal no_std empty_main wasm # this target doesn't really have std
|
||||||
TEST_TARGET=thumbv7em-none-eabihf run_tests_minimal no_std
|
TEST_TARGET=thumbv7em-none-eabihf run_tests_minimal no_std
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
|
|
@ -250,7 +250,7 @@ pub fn report_result<'tcx>(
|
||||||
StackedBorrowsUb { .. } | TreeBorrowsUb { .. } | DataRace { .. } =>
|
StackedBorrowsUb { .. } | TreeBorrowsUb { .. } | DataRace { .. } =>
|
||||||
Some("Undefined Behavior"),
|
Some("Undefined Behavior"),
|
||||||
LocalDeadlock => {
|
LocalDeadlock => {
|
||||||
labels.push(format!("this thread got stuck here"));
|
labels.push(format!("thread got stuck here"));
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
GlobalDeadlock => {
|
GlobalDeadlock => {
|
||||||
|
|
@ -264,10 +264,7 @@ pub fn report_result<'tcx>(
|
||||||
report_msg(
|
report_msg(
|
||||||
DiagLevel::Error,
|
DiagLevel::Error,
|
||||||
format!("the evaluated program deadlocked"),
|
format!("the evaluated program deadlocked"),
|
||||||
vec![format!(
|
vec![format!("thread got stuck here")],
|
||||||
"thread `{}` got stuck here",
|
|
||||||
ecx.machine.threads.get_thread_display_name(thread)
|
|
||||||
)],
|
|
||||||
vec![],
|
vec![],
|
||||||
vec![],
|
vec![],
|
||||||
&stacktrace,
|
&stacktrace,
|
||||||
|
|
@ -558,42 +555,30 @@ fn report_msg<'tcx>(
|
||||||
thread: Option<ThreadId>,
|
thread: Option<ThreadId>,
|
||||||
machine: &MiriMachine<'tcx>,
|
machine: &MiriMachine<'tcx>,
|
||||||
) {
|
) {
|
||||||
let span = match stacktrace.first() {
|
let origin_span = thread.map(|t| machine.threads.thread_ref(t).origin_span).unwrap_or(DUMMY_SP);
|
||||||
Some(fi) => fi.span,
|
let span = stacktrace.first().map(|fi| fi.span).unwrap_or(origin_span);
|
||||||
None =>
|
// The only time we do not have an origin span is for `main`, and there we check the signature
|
||||||
match thread {
|
// upfront. So we should always have a span here.
|
||||||
Some(thread_id) => machine.threads.thread_ref(thread_id).origin_span,
|
assert!(!span.is_dummy());
|
||||||
None => DUMMY_SP,
|
|
||||||
},
|
let tcx = machine.tcx;
|
||||||
};
|
|
||||||
let sess = machine.tcx.sess;
|
|
||||||
let level = match diag_level {
|
let level = match diag_level {
|
||||||
DiagLevel::Error => Level::Error,
|
DiagLevel::Error => Level::Error,
|
||||||
DiagLevel::Warning => Level::Warning,
|
DiagLevel::Warning => Level::Warning,
|
||||||
DiagLevel::Note => Level::Note,
|
DiagLevel::Note => Level::Note,
|
||||||
};
|
};
|
||||||
let mut err = Diag::<()>::new(sess.dcx(), level, title);
|
let mut err = Diag::<()>::new(tcx.sess.dcx(), level, title);
|
||||||
err.span(span);
|
err.span(span);
|
||||||
|
|
||||||
// Show main message.
|
// Show main message.
|
||||||
if !span.is_dummy() {
|
for line in span_msg {
|
||||||
for line in span_msg {
|
err.span_label(span, line);
|
||||||
err.span_label(span, line);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Make sure we show the message even when it is a dummy span.
|
|
||||||
for line in span_msg {
|
|
||||||
err.note(line);
|
|
||||||
}
|
|
||||||
err.note("(no span available)");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show note and help messages.
|
// Show note and help messages.
|
||||||
let mut extra_span = false;
|
|
||||||
for (span_data, note) in notes {
|
for (span_data, note) in notes {
|
||||||
if let Some(span_data) = span_data {
|
if let Some(span_data) = span_data {
|
||||||
err.span_note(span_data.span(), note);
|
err.span_note(span_data.span(), note);
|
||||||
extra_span = true;
|
|
||||||
} else {
|
} else {
|
||||||
err.note(note);
|
err.note(note);
|
||||||
}
|
}
|
||||||
|
|
@ -601,43 +586,44 @@ fn report_msg<'tcx>(
|
||||||
for (span_data, help) in helps {
|
for (span_data, help) in helps {
|
||||||
if let Some(span_data) = span_data {
|
if let Some(span_data) = span_data {
|
||||||
err.span_help(span_data.span(), help);
|
err.span_help(span_data.span(), help);
|
||||||
extra_span = true;
|
|
||||||
} else {
|
} else {
|
||||||
err.help(help);
|
err.help(help);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Only print thread name if there are multiple threads.
|
||||||
|
if let Some(thread) = thread
|
||||||
|
&& machine.threads.get_total_thread_count() > 1
|
||||||
|
{
|
||||||
|
err.note(format!(
|
||||||
|
"this is on thread `{}`",
|
||||||
|
machine.threads.get_thread_display_name(thread)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
// Add backtrace
|
// Add backtrace
|
||||||
if stacktrace.len() > 1 {
|
if stacktrace.len() > 0 {
|
||||||
let mut backtrace_title = String::from("BACKTRACE");
|
// Skip it if we'd only shpw the span we have already shown
|
||||||
if extra_span {
|
if stacktrace.len() > 1 {
|
||||||
write!(backtrace_title, " (of the first span)").unwrap();
|
let sm = tcx.sess.source_map();
|
||||||
}
|
let mut out = format!("stack backtrace:");
|
||||||
if let Some(thread) = thread {
|
for (idx, frame_info) in stacktrace.iter().enumerate() {
|
||||||
let thread_name = machine.threads.get_thread_display_name(thread);
|
|
||||||
if thread_name != "main" {
|
|
||||||
// Only print thread name if it is not `main`.
|
|
||||||
write!(backtrace_title, " on thread `{thread_name}`").unwrap();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
write!(backtrace_title, ":").unwrap();
|
|
||||||
err.note(backtrace_title);
|
|
||||||
for (idx, frame_info) in stacktrace.iter().enumerate() {
|
|
||||||
let is_local = machine.is_local(frame_info.instance);
|
|
||||||
// No span for non-local frames and the first frame (which is the error site).
|
|
||||||
if is_local && idx > 0 {
|
|
||||||
err.subdiagnostic(frame_info.as_note(machine.tcx));
|
|
||||||
} else {
|
|
||||||
let sm = sess.source_map();
|
|
||||||
let span = sm.span_to_diagnostic_string(frame_info.span);
|
let span = sm.span_to_diagnostic_string(frame_info.span);
|
||||||
err.note(format!("{frame_info} at {span}"));
|
write!(out, "\n{idx}: {}", frame_info.instance).unwrap();
|
||||||
|
write!(out, "\n at {span}").unwrap();
|
||||||
}
|
}
|
||||||
|
err.note(out);
|
||||||
}
|
}
|
||||||
} else if stacktrace.len() == 0 && !span.is_dummy() {
|
// For TLS dtors and non-main threads, show the "origin"
|
||||||
err.note(format!(
|
if !origin_span.is_dummy() {
|
||||||
"this {} occurred while pushing a call frame onto an empty stack",
|
let what = if stacktrace.len() > 1 {
|
||||||
level.to_str()
|
"the last function in that backtrace"
|
||||||
));
|
} else {
|
||||||
|
"the current function"
|
||||||
|
};
|
||||||
|
err.span_note(origin_span, format!("{what} got called indirectly due to this code"));
|
||||||
|
}
|
||||||
|
} else if !span.is_dummy() {
|
||||||
|
err.note(format!("this {level} occurred while pushing a call frame onto an empty stack"));
|
||||||
err.note("the span indicates which code caused the function to be called, but may not be the literal call site");
|
err.note("the span indicates which code caused the function to be called, but may not be the literal call site");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
//@only-target: darwin
|
//@only-target: darwin
|
||||||
|
//@compile-flags: -Zmiri-fixed-schedule
|
||||||
#![feature(sync_unsafe_cell)]
|
#![feature(sync_unsafe_cell)]
|
||||||
|
|
||||||
use std::cell::SyncUnsafeCell;
|
use std::cell::SyncUnsafeCell;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,15 @@ LL | let _val = atomic_ref.load(Ordering::Relaxed);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/apple_os_unfair_lock_move_with_queue.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / ... s.spawn(|| {
|
||||||
|
LL | | ... let atomic_ref = unsafe { &*lock.get().cast::<AtomicU32>() };
|
||||||
|
LL | | ... let _val = atomic_ref.load(Ordering::Relaxed);
|
||||||
|
LL | | ... });
|
||||||
|
| |________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | libc::pthread_cond_destroy(cond2.as_mut_ptr());
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `check` at tests/fail-dep/concurrency/libc_pthread_cond_move.rs:LL:CC
|
0: check
|
||||||
note: inside `main`
|
at tests/fail-dep/concurrency/libc_pthread_cond_move.rs:LL:CC
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_cond_move.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail-dep/concurrency/libc_pthread_cond_move.rs:LL:CC
|
||||||
LL | check()
|
|
||||||
| ^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | libc::pthread_cond_destroy(&mut cond2 as *mut _);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `check` at tests/fail-dep/concurrency/libc_pthread_cond_move.rs:LL:CC
|
0: check
|
||||||
note: inside `main`
|
at tests/fail-dep/concurrency/libc_pthread_cond_move.rs:LL:CC
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_cond_move.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail-dep/concurrency/libc_pthread_cond_move.rs:LL:CC
|
||||||
LL | check()
|
|
||||||
| ^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ LL | libc::pthread_create(&mut native, ptr::null(), thread_start, pt
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
= note: this error occurred while pushing a call frame onto an empty stack
|
= note: this error occurred while pushing a call frame onto an empty stack
|
||||||
= note: the span indicates which code caused the function to be called, but may not be the literal call site
|
= note: the span indicates which code caused the function to be called, but may not be the literal call site
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ LL | libc::pthread_create(&mut native, ptr::null(), thread_start, pt
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
= note: this error occurred while pushing a call frame onto an empty stack
|
= note: this error occurred while pushing a call frame onto an empty stack
|
||||||
= note: the span indicates which code caused the function to be called, but may not be the literal call site
|
= note: the span indicates which code caused the function to be called, but may not be the literal call site
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ LL | assert_eq!(libc::pthread_join(native, ptr::null_mut()), 0);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `main`
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ LL | ... assert_eq!(libc::pthread_join(native, ptr::null_mut()), 0);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `main`
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,17 @@ LL | ... assert_eq!(libc::pthread_join(thread_id, ptr::null_mut()), 0);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_join_main.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let handle = thread::spawn(move || {
|
||||||
|
| __________________^
|
||||||
|
LL | | unsafe {
|
||||||
|
LL | | assert_eq!(libc::pthread_join(thread_id, ptr::null_mut()), 0);
|
||||||
|
LL | | }
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,15 @@ LL | ... assert_eq!(libc::pthread_join(native_copy, ptr::null_mut()), 0);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_join_multiple.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | ... let handle = thread::spawn(move || {
|
||||||
|
| ____________________^
|
||||||
|
LL | | ... assert_eq!(libc::pthread_join(native_copy, ptr::null_mut()), 0);
|
||||||
|
LL | | ... });
|
||||||
|
| |________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,18 @@ LL | assert_eq!(libc::pthread_join(native, ptr::null_mut()), 0);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_join_self.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let handle = thread::spawn(|| {
|
||||||
|
| __________________^
|
||||||
|
LL | | unsafe {
|
||||||
|
LL | | let native: libc::pthread_t = libc::pthread_self();
|
||||||
|
LL | | assert_eq!(libc::pthread_join(native, ptr::null_mut()), 0);
|
||||||
|
LL | | }
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,26 +2,33 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_mutex_deadlock.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | / thread::spawn(move || {
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
LL | | assert_eq!(libc::pthread_mutex_lock(lock_copy.0.get() as *mut _), 0);
|
3: main
|
||||||
LL | | })
|
at tests/fail-dep/concurrency/libc_pthread_mutex_deadlock.rs:LL:CC
|
||||||
LL | | .join()
|
|
||||||
| |_______________^
|
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_mutex_deadlock.rs:LL:CC
|
--> tests/fail-dep/concurrency/libc_pthread_mutex_deadlock.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | assert_eq!(libc::pthread_mutex_lock(lock_copy.0.get() as *mut _), 0);
|
LL | assert_eq!(libc::pthread_mutex_lock(lock_copy.0.get() as *mut _), 0);
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_mutex_deadlock.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / thread::spawn(move || {
|
||||||
|
LL | | assert_eq!(libc::pthread_mutex_lock(lock_copy.0.get() as *mut _), 0);
|
||||||
|
LL | | })
|
||||||
|
| |__________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,25 @@ LL | self.1.deallocate(From::from(ptr.cast()), layout);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE on thread `unnamed-ID`:
|
= note: this is on thread `unnamed-ID`
|
||||||
= note: inside `<std::boxed::Box<Mutex> as std::ops::Drop>::drop` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::ptr::drop_in_place::<std::boxed::Box<Mutex>> - shim(Some(std::boxed::Box<Mutex>))` at RUSTLIB/core/src/ptr/mod.rs:LL:CC
|
0: <std::boxed::Box<Mutex> as std::ops::Drop>::drop
|
||||||
= note: inside `std::mem::drop::<std::boxed::Box<Mutex>>` at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
note: inside closure
|
1: std::ptr::drop_in_place))
|
||||||
|
at RUSTLIB/core/src/ptr/mod.rs:LL:CC
|
||||||
|
2: std::mem::drop
|
||||||
|
at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
||||||
|
3: main::{closure#0}::{closure#2}
|
||||||
|
at tests/fail-dep/concurrency/libc_pthread_mutex_free_while_queued.rs:LL:CC
|
||||||
|
note: the last function in that backtrace got called indirectly due to this code
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_mutex_free_while_queued.rs:LL:CC
|
--> tests/fail-dep/concurrency/libc_pthread_mutex_free_while_queued.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | drop(unsafe { Box::from_raw(m.get().cast::<Mutex>()) });
|
LL | / s.spawn(|| {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
LL | | // Ensure we happen-after the initialization write.
|
||||||
|
LL | | assert!(initialized.load(Ordering::Acquire));
|
||||||
|
... |
|
||||||
|
LL | | });
|
||||||
|
| |__________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | libc::pthread_mutex_lock(&mut m2 as *mut _);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `check` at tests/fail-dep/concurrency/libc_pthread_mutex_move.rs:LL:CC
|
0: check
|
||||||
note: inside `main`
|
at tests/fail-dep/concurrency/libc_pthread_mutex_move.rs:LL:CC
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_mutex_move.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail-dep/concurrency/libc_pthread_mutex_move.rs:LL:CC
|
||||||
LL | check();
|
|
||||||
| ^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | libc::pthread_mutex_unlock(&mut m2 as *mut _);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `check` at tests/fail-dep/concurrency/libc_pthread_mutex_move.rs:LL:CC
|
0: check
|
||||||
note: inside `main`
|
at tests/fail-dep/concurrency/libc_pthread_mutex_move.rs:LL:CC
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_mutex_move.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail-dep/concurrency/libc_pthread_mutex_move.rs:LL:CC
|
||||||
LL | check();
|
|
||||||
| ^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ error: a thread deadlocked
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_mutex_normal_reentrant.rs:LL:CC
|
--> tests/fail-dep/concurrency/libc_pthread_mutex_normal_reentrant.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | libc::pthread_mutex_lock(&mut mutex as *mut _);
|
LL | libc::pthread_mutex_lock(&mut mutex as *mut _);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this thread got stuck here
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ thread got stuck here
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,15 @@ LL | ... let _val = atomic_ref.load(Ordering::Relaxed);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_mutex_read_while_queued.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / ... s.spawn(|| {
|
||||||
|
LL | | ... let atomic_ref = unsafe { &*m.get().byte_add(OFFSET).cast::<AtomicU32>() };
|
||||||
|
LL | | ... let _val = atomic_ref.load(Ordering::Relaxed);
|
||||||
|
LL | | ... });
|
||||||
|
| |________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,15 @@ LL | atomic_ref.store(0, Ordering::Relaxed);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_mutex_write_while_queued.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / s.spawn(|| {
|
||||||
|
LL | | let atomic_ref = unsafe { &*m.get().byte_add(OFFSET).cast::<AtomicU32>() };
|
||||||
|
LL | | atomic_ref.store(0, Ordering::Relaxed);
|
||||||
|
LL | | });
|
||||||
|
| |__________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,14 @@ LL | ... assert_eq!(libc::pthread_mutex_unlock(lock_copy.0.get() as *mut _), 0
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_mutex_wrong_owner.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / ... thread::spawn(move || {
|
||||||
|
LL | | ... assert_eq!(libc::pthread_mutex_unlock(lock_copy.0.get() as *mut _), 0);
|
||||||
|
LL | | ... })
|
||||||
|
| |________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_rwlock_read_write_deadlock_single_thread.rs:LL:CC
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_read_write_deadlock_single_thread.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | libc::pthread_rwlock_wrlock(rw.get());
|
LL | libc::pthread_rwlock_wrlock(rw.get());
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,14 @@ LL | ... assert_eq!(libc::pthread_rwlock_unlock(lock_copy.0.get() as *mut _),
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_read_wrong_owner.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / ... thread::spawn(move || {
|
||||||
|
LL | | ... assert_eq!(libc::pthread_rwlock_unlock(lock_copy.0.get() as *mut _), 0);
|
||||||
|
LL | | ... })
|
||||||
|
| |________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,26 +2,33 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_read_deadlock.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | / thread::spawn(move || {
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
LL | | assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0);
|
3: main
|
||||||
LL | | })
|
at tests/fail-dep/concurrency/libc_pthread_rwlock_write_read_deadlock.rs:LL:CC
|
||||||
LL | | .join()
|
|
||||||
| |_______________^
|
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_read_deadlock.rs:LL:CC
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_read_deadlock.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0);
|
LL | assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0);
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_read_deadlock.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / thread::spawn(move || {
|
||||||
|
LL | | assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0);
|
||||||
|
LL | | })
|
||||||
|
| |__________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_read_deadlock_single_thread.rs:LL:CC
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_read_deadlock_single_thread.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | libc::pthread_rwlock_rdlock(rw.get());
|
LL | libc::pthread_rwlock_rdlock(rw.get());
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,26 +2,33 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_write_deadlock.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | / thread::spawn(move || {
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
LL | | assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0);
|
3: main
|
||||||
LL | | })
|
at tests/fail-dep/concurrency/libc_pthread_rwlock_write_write_deadlock.rs:LL:CC
|
||||||
LL | | .join()
|
|
||||||
| |_______________^
|
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_write_deadlock.rs:LL:CC
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_write_deadlock.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0);
|
LL | assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0);
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_write_deadlock.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / thread::spawn(move || {
|
||||||
|
LL | | assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0);
|
||||||
|
LL | | })
|
||||||
|
| |__________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_write_deadlock_single_thread.rs:LL:CC
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_write_deadlock_single_thread.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | libc::pthread_rwlock_wrlock(rw.get());
|
LL | libc::pthread_rwlock_wrlock(rw.get());
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,14 @@ LL | ... assert_eq!(libc::pthread_rwlock_unlock(lock_copy.0.get() as *mut _),
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/libc_pthread_rwlock_write_wrong_owner.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / ... thread::spawn(move || {
|
||||||
|
LL | | ... assert_eq!(libc::pthread_rwlock_unlock(lock_copy.0.get() as *mut _), 0);
|
||||||
|
LL | | ... })
|
||||||
|
| |________^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,16 @@ LL | let rc = unsafe { c::WaitForSingleObject(self.handle.as_raw_handle(
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/concurrency/windows_join_detached.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | thread.join().unwrap();
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^
|
3: main
|
||||||
|
at tests/fail-dep/concurrency/windows_join_detached.rs:LL:CC
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,28 +2,35 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let rc = unsafe { c::WaitForSingleObject(self.handle.as_raw_handle(), c::INFINITE) };
|
LL | let rc = unsafe { c::WaitForSingleObject(self.handle.as_raw_handle(), c::INFINITE) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/concurrency/windows_join_main.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | / thread::spawn(|| {
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
LL | | unsafe {
|
3: main
|
||||||
LL | | assert_eq!(WaitForSingleObject(MAIN_THREAD, INFINITE), WAIT_OBJECT_0);
|
at tests/fail-dep/concurrency/windows_join_main.rs:LL:CC
|
||||||
... |
|
|
||||||
LL | | .join()
|
|
||||||
| |___________^
|
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/concurrency/windows_join_main.rs:LL:CC
|
--> tests/fail-dep/concurrency/windows_join_main.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | assert_eq!(WaitForSingleObject(MAIN_THREAD, INFINITE), WAIT_OBJECT_0);
|
LL | assert_eq!(WaitForSingleObject(MAIN_THREAD, INFINITE), WAIT_OBJECT_0);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ thread `unnamed-ID` got stuck here
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ thread got stuck here
|
||||||
|
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/concurrency/windows_join_main.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | / thread::spawn(|| {
|
||||||
|
LL | | unsafe {
|
||||||
|
LL | | assert_eq!(WaitForSingleObject(MAIN_THREAD, INFINITE), WAIT_OBJECT_0);
|
||||||
|
LL | | }
|
||||||
|
LL | | })
|
||||||
|
| |______^
|
||||||
= note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,27 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let rc = unsafe { c::WaitForSingleObject(self.handle.as_raw_handle(), c::INFINITE) };
|
LL | let rc = unsafe { c::WaitForSingleObject(self.handle.as_raw_handle(), c::INFINITE) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
2: std::thread::JoinHandle::join
|
||||||
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
|
3: main
|
||||||
|
at tests/fail-dep/concurrency/windows_join_self.rs:LL:CC
|
||||||
|
|
||||||
|
error: the evaluated program deadlocked
|
||||||
|
--> tests/fail-dep/concurrency/windows_join_self.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | assert_eq!(WaitForSingleObject(native, INFINITE), WAIT_OBJECT_0);
|
||||||
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
--> tests/fail-dep/concurrency/windows_join_self.rs:LL:CC
|
--> tests/fail-dep/concurrency/windows_join_self.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | / thread::spawn(|| {
|
LL | / thread::spawn(|| {
|
||||||
|
|
@ -17,14 +31,7 @@ LL | | let native = GetCurrentThread();
|
||||||
LL | | assert_eq!(WaitForSingleObject(native, INFINITE), WAIT_OBJECT_0);
|
LL | | assert_eq!(WaitForSingleObject(native, INFINITE), WAIT_OBJECT_0);
|
||||||
LL | | }
|
LL | | }
|
||||||
LL | | })
|
LL | | })
|
||||||
LL | | .join()
|
| |______^
|
||||||
| |___________^
|
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
|
||||||
--> tests/fail-dep/concurrency/windows_join_self.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | assert_eq!(WaitForSingleObject(native, INFINITE), WAIT_OBJECT_0);
|
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,17 @@ LL | env::set_var("MY_RUST_VAR", "Ferris");
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/libc/env-set_var-data-race.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let t = thread::spawn(|| unsafe {
|
||||||
|
| _____________^
|
||||||
|
LL | | // Access the environment in another thread without taking the env lock.
|
||||||
|
LL | | // This represents some C code that queries the environment.
|
||||||
|
LL | | libc::getenv(b"TZ/0".as_ptr().cast());
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,36 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/libc/eventfd_block_read_twice.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | thread2.join().unwrap();
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^
|
3: main
|
||||||
|
at tests/fail-dep/libc/eventfd_block_read_twice.rs:LL:CC
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/libc/eventfd_block_read_twice.rs:LL:CC
|
--> tests/fail-dep/libc/eventfd_block_read_twice.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let res: i64 = unsafe { libc::read(fd, buf.as_mut_ptr().cast(), 8).try_into().unwrap() };
|
LL | let res: i64 = unsafe { libc::read(fd, buf.as_mut_ptr().cast(), 8).try_into().unwrap() };
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/libc/eventfd_block_read_twice.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let thread2 = thread::spawn(move || {
|
||||||
|
| ___________________^
|
||||||
|
LL | | let mut buf: [u8; 8] = [0; 8];
|
||||||
|
... |
|
||||||
|
LL | | assert_eq!(counter, 1_u64);
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,38 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/libc/eventfd_block_write_twice.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | thread2.join().unwrap();
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^
|
3: main
|
||||||
|
at tests/fail-dep/libc/eventfd_block_write_twice.rs:LL:CC
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/libc/eventfd_block_write_twice.rs:LL:CC
|
--> tests/fail-dep/libc/eventfd_block_write_twice.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | libc::write(fd, sized_8_data.as_ptr() as *const libc::c_void, 8).try_into().unwrap()
|
LL | libc::write(fd, sized_8_data.as_ptr() as *const libc::c_void, 8).try_into().unwrap()
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/libc/eventfd_block_write_twice.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let thread2 = thread::spawn(move || {
|
||||||
|
| ___________________^
|
||||||
|
LL | | let sized_8_data = (u64::MAX - 1).to_ne_bytes();
|
||||||
|
LL | | // Write u64::MAX - 1, so that all subsequent writes will block.
|
||||||
|
LL | | let res: i64 = unsafe {
|
||||||
|
... |
|
||||||
|
LL | | assert_eq!(res, 8);
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@ error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/libc/fcntl_fsetfl_while_blocking.rs:LL:CC
|
--> tests/fail-dep/libc/fcntl_fsetfl_while_blocking.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let _res = unsafe { libc::read(fds[0], buf.as_mut_ptr().cast(), buf.len() as libc::size_t) };
|
LL | let _res = unsafe { libc::read(fds[0], buf.as_mut_ptr().cast(), buf.len() as libc::size_t) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `main`
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | let _fd = unsafe { libc::mkstemp(s) };
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `test_mkstemp_immutable_arg` at tests/fail-dep/libc/fs/mkstemp_immutable_arg.rs:LL:CC
|
0: test_mkstemp_immutable_arg
|
||||||
note: inside `main`
|
at tests/fail-dep/libc/fs/mkstemp_immutable_arg.rs:LL:CC
|
||||||
--> tests/fail-dep/libc/fs/mkstemp_immutable_arg.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail-dep/libc/fs/mkstemp_immutable_arg.rs:LL:CC
|
||||||
LL | test_mkstemp_immutable_arg();
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | let _fd = unsafe { libc::open(name_ptr, libc::O_CREAT) };
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `test_file_open_missing_needed_mode` at tests/fail-dep/libc/fs/unix_open_missing_required_mode.rs:LL:CC
|
0: test_file_open_missing_needed_mode
|
||||||
note: inside `main`
|
at tests/fail-dep/libc/fs/unix_open_missing_required_mode.rs:LL:CC
|
||||||
--> tests/fail-dep/libc/fs/unix_open_missing_required_mode.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail-dep/libc/fs/unix_open_missing_required_mode.rs:LL:CC
|
||||||
LL | test_file_open_missing_needed_mode();
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ LL | unsafe { VAL_TWO = 51 };
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `main`
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,35 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/libc/libc_epoll_block_two_thread.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | thread2.join().unwrap();
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^
|
3: main
|
||||||
|
at tests/fail-dep/libc/libc_epoll_block_two_thread.rs:LL:CC
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/libc/libc_epoll_block_two_thread.rs:LL:CC
|
--> tests/fail-dep/libc/libc_epoll_block_two_thread.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | check_epoll_wait::<TAG>(epfd, &expected, -1);
|
LL | check_epoll_wait::<TAG>(epfd, &expected, -1);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ thread `unnamed-ID` got stuck here
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/libc/libc_epoll_block_two_thread.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let thread2 = thread::spawn(move || {
|
||||||
|
| ___________________^
|
||||||
|
LL | | check_epoll_wait::<TAG>(epfd, &expected, -1);
|
||||||
|
LL | |
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,6 @@
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut buf = vec![0u8; 15];
|
let mut buf = vec![0u8; 15];
|
||||||
unsafe {
|
unsafe {
|
||||||
libc::prctl(libc::PR_GET_NAME, buf.as_mut_ptr().cast::<libc::c_char>()); //~ ERROR: memory access failed: expected a pointer to 16 bytes of memory, but got alloc952 which is only 15 bytes from the end of the allocation
|
libc::prctl(libc::PR_GET_NAME, buf.as_mut_ptr().cast::<libc::c_char>()); //~ ERROR: memory access failed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,16 @@
|
||||||
error: Undefined Behavior: memory access failed: expected a pointer to 16 bytes of memory, but got ALLOC which is only 15 bytes from the end of the allocation
|
error: Undefined Behavior: memory access failed: attempting to access 16 bytes, but got ALLOC which is only 15 bytes from the end of the allocation
|
||||||
--> tests/fail-dep/libc/prctl-threadname.rs:LL:CC
|
--> tests/fail-dep/libc/prctl-get-name-buffer-too-small.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | libc::prctl(libc::PR_GET_NAME, buf.as_mut_ptr().cast::<libc::c_char>());
|
LL | libc::prctl(libc::PR_GET_NAME, buf.as_mut_ptr().cast::<libc::c_char>());
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ memory access failed: expected a pointer to 16 bytes of memory, but got ALLOC which is only 15 bytes from the end of the allocation
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Undefined Behavior occurred here
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
help: ALLOC was allocated here:
|
help: ALLOC was allocated here:
|
||||||
--> tests/fail-dep/libc/prctl-threadname.rs:LL:CC
|
--> tests/fail-dep/libc/prctl-get-name-buffer-too-small.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let mut buf = vec![0u8; 15];
|
LL | let mut buf = vec![0u8; 15];
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
|
||||||
= note: inside `main` at tests/fail-dep/libc/prctl-threadname.rs:LL:CC
|
|
||||||
= note: this error originates in the macro `vec` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `vec` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,38 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/libc/socketpair-close-while-blocked.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | thread1.join().unwrap();
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^
|
3: main
|
||||||
|
at tests/fail-dep/libc/socketpair-close-while-blocked.rs:LL:CC
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/libc/socketpair-close-while-blocked.rs:LL:CC
|
--> tests/fail-dep/libc/socketpair-close-while-blocked.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | libc::read(fds[1], buf.as_mut_ptr().cast(), buf.len() as libc::size_t)
|
LL | libc::read(fds[1], buf.as_mut_ptr().cast(), buf.len() as libc::size_t)
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/libc/socketpair-close-while-blocked.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let thread1 = thread::spawn(move || {
|
||||||
|
| ___________________^
|
||||||
|
LL | | let mut buf: [u8; 1] = [0; 1];
|
||||||
|
LL | | let _res: i32 = unsafe {
|
||||||
|
LL | | libc::read(fds[1], buf.as_mut_ptr().cast(), buf.len() as libc::size_t)
|
||||||
|
... |
|
||||||
|
LL | | };
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ LL | unsafe { VAL = 1 };
|
||||||
| ^^^^^^^
|
| ^^^^^^^
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
|
= note: this is on thread `main`
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,38 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/libc/socketpair_block_read_twice.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | thread2.join().unwrap();
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^
|
3: main
|
||||||
|
at tests/fail-dep/libc/socketpair_block_read_twice.rs:LL:CC
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/libc/socketpair_block_read_twice.rs:LL:CC
|
--> tests/fail-dep/libc/socketpair_block_read_twice.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | libc::read(fds[1], buf.as_mut_ptr().cast(), buf.len() as libc::size_t)
|
LL | libc::read(fds[1], buf.as_mut_ptr().cast(), buf.len() as libc::size_t)
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/libc/socketpair_block_read_twice.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let thread2 = thread::spawn(move || {
|
||||||
|
| ___________________^
|
||||||
|
LL | | // Let this thread block on read.
|
||||||
|
LL | | let mut buf: [u8; 1] = [0; 1];
|
||||||
|
LL | | let res = unsafe {
|
||||||
|
... |
|
||||||
|
LL | | assert_eq!(&buf, "a".as_bytes());
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,38 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
--> RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
LL | let ret = unsafe { libc::pthread_join(id, ptr::null_mut()) };
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: this is on thread `main`
|
||||||
= note: inside `std::sys::thread::PLATFORM::Thread::join` at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
= note: stack backtrace:
|
||||||
= note: inside `std::thread::lifecycle::JoinInner::<'_, ()>::join` at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
0: std::sys::thread::PLATFORM::Thread::join
|
||||||
= note: inside `std::thread::JoinHandle::<()>::join` at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
at RUSTLIB/std/src/sys/thread/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::thread::lifecycle::JoinInner::join
|
||||||
--> tests/fail-dep/libc/socketpair_block_write_twice.rs:LL:CC
|
at RUSTLIB/std/src/thread/lifecycle.rs:LL:CC
|
||||||
|
|
2: std::thread::JoinHandle::join
|
||||||
LL | thread2.join().unwrap();
|
at RUSTLIB/std/src/thread/join_handle.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^
|
3: main
|
||||||
|
at tests/fail-dep/libc/socketpair_block_write_twice.rs:LL:CC
|
||||||
|
|
||||||
error: the evaluated program deadlocked
|
error: the evaluated program deadlocked
|
||||||
--> tests/fail-dep/libc/socketpair_block_write_twice.rs:LL:CC
|
--> tests/fail-dep/libc/socketpair_block_write_twice.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let res = unsafe { libc::write(fds[0], data.as_ptr() as *const libc::c_void, data.len()) };
|
LL | let res = unsafe { libc::write(fds[0], data.as_ptr() as *const libc::c_void, data.len()) };
|
||||||
| ^ thread `unnamed-ID` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
||||||
|
= note: this is on thread `unnamed-ID`
|
||||||
|
note: the current function got called indirectly due to this code
|
||||||
|
--> tests/fail-dep/libc/socketpair_block_write_twice.rs:LL:CC
|
||||||
|
|
|
||||||
|
LL | let thread2 = thread::spawn(move || {
|
||||||
|
| ___________________^
|
||||||
|
LL | | let data = "a".as_bytes();
|
||||||
|
LL | | // The write below will be blocked because the buffer is already full.
|
||||||
|
LL | | let res = unsafe { libc::write(fds[0], data.as_ptr() as *const libc::c_void, data.len()) };
|
||||||
|
LL | |
|
||||||
|
LL | | assert_eq!(res, data.len().cast_signed());
|
||||||
|
LL | | });
|
||||||
|
| |______^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
error: deadlock: the evaluated program deadlocked
|
|
||||||
--> tests/fail-dep/libc/socketpair_read_blocking.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | let _res = unsafe { libc::read(fds[1], buf.as_mut_ptr().cast(), buf.len() as libc::size_t) };
|
|
||||||
| ^ the evaluated program deadlocked
|
|
||||||
|
|
|
||||||
= note: BACKTRACE:
|
|
||||||
= note: inside `main` at tests/fail-dep/libc/socketpair_read_blocking.rs:LL:CC
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
|
||||||
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
error: deadlock: the evaluated program deadlocked
|
|
||||||
--> tests/fail-dep/libc/socketpair_write_blocking.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | let _ = unsafe { libc::write(fds[0], data as *const libc::c_void, 3) };
|
|
||||||
| ^ the evaluated program deadlocked
|
|
||||||
|
|
|
||||||
= note: BACKTRACE:
|
|
||||||
= note: inside `main` at tests/fail-dep/libc/socketpair_write_blocking.rs:LL:CC
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
|
||||||
|
|
||||||
|
|
@ -7,18 +7,21 @@ error: abnormal termination: the program aborted execution
|
||||||
LL | crate::process::abort()
|
LL | crate::process::abort()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ abnormal termination occurred here
|
| ^^^^^^^^^^^^^^^^^^^^^^^ abnormal termination occurred here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside closure at RUSTLIB/std/src/alloc.rs:LL:CC
|
0: std::alloc::rust_oom::{closure#0}
|
||||||
= note: inside `std::sys::backtrace::__rust_end_short_backtrace::<{closure@std::alloc::rust_oom::{closure#0}}, !>` at RUSTLIB/std/src/sys/backtrace.rs:LL:CC
|
at RUSTLIB/std/src/alloc.rs:LL:CC
|
||||||
= note: inside `std::alloc::rust_oom` at RUSTLIB/std/src/alloc.rs:LL:CC
|
1: std::sys::backtrace::__rust_end_short_backtrace
|
||||||
= note: inside `std::alloc::_::__rust_alloc_error_handler` at RUSTLIB/std/src/alloc.rs:LL:CC
|
at RUSTLIB/std/src/sys/backtrace.rs:LL:CC
|
||||||
= note: inside `std::alloc::handle_alloc_error::rt_error` at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
2: std::alloc::rust_oom
|
||||||
= note: inside `std::alloc::handle_alloc_error` at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
at RUSTLIB/std/src/alloc.rs:LL:CC
|
||||||
note: inside `main`
|
3: std::alloc::_::__rust_alloc_error_handler
|
||||||
--> tests/fail/alloc/alloc_error_handler.rs:LL:CC
|
at RUSTLIB/std/src/alloc.rs:LL:CC
|
||||||
|
|
4: std::alloc::handle_alloc_error::rt_error
|
||||||
LL | handle_alloc_error(Layout::for_value(&0));
|
at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
5: std::alloc::handle_alloc_error
|
||||||
|
at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
||||||
|
6: main
|
||||||
|
at tests/fail/alloc/alloc_error_handler.rs:LL:CC
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,22 +5,17 @@ error: abnormal termination: the program aborted execution
|
||||||
LL | core::intrinsics::abort();
|
LL | core::intrinsics::abort();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ abnormal termination occurred here
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ abnormal termination occurred here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `alloc_error_handler` at tests/fail/alloc/alloc_error_handler_custom.rs:LL:CC
|
0: alloc_error_handler
|
||||||
note: inside `_::__rust_alloc_error_handler`
|
at tests/fail/alloc/alloc_error_handler_custom.rs:LL:CC
|
||||||
--> tests/fail/alloc/alloc_error_handler_custom.rs:LL:CC
|
1: _::__rust_alloc_error_handler
|
||||||
|
|
at tests/fail/alloc/alloc_error_handler_custom.rs:LL:CC
|
||||||
LL | #[alloc_error_handler]
|
2: alloc::alloc::handle_alloc_error::rt_error
|
||||||
| ---------------------- in this attribute macro expansion
|
at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
||||||
LL | fn alloc_error_handler(layout: Layout) -> ! {
|
3: alloc::alloc::handle_alloc_error
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
||||||
= note: inside `alloc::alloc::handle_alloc_error::rt_error` at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
4: miri_start
|
||||||
= note: inside `alloc::alloc::handle_alloc_error` at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
at tests/fail/alloc/alloc_error_handler_custom.rs:LL:CC
|
||||||
note: inside `miri_start`
|
|
||||||
--> tests/fail/alloc/alloc_error_handler_custom.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | handle_alloc_error(Layout::for_value(&0));
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,16 +7,17 @@ error: abnormal termination: the program aborted execution
|
||||||
LL | core::intrinsics::abort();
|
LL | core::intrinsics::abort();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ abnormal termination occurred here
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ abnormal termination occurred here
|
||||||
|
|
|
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `panic_handler` at tests/fail/alloc/alloc_error_handler_no_std.rs:LL:CC
|
0: panic_handler
|
||||||
= note: inside `alloc::alloc::__alloc_error_handler::__rdl_alloc_error_handler` at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
at tests/fail/alloc/alloc_error_handler_no_std.rs:LL:CC
|
||||||
= note: inside `alloc::alloc::handle_alloc_error::rt_error` at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
1: alloc::alloc::__alloc_error_handler::__rdl_alloc_error_handler
|
||||||
= note: inside `alloc::alloc::handle_alloc_error` at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
||||||
note: inside `miri_start`
|
2: alloc::alloc::handle_alloc_error::rt_error
|
||||||
--> tests/fail/alloc/alloc_error_handler_no_std.rs:LL:CC
|
at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
||||||
|
|
3: alloc::alloc::handle_alloc_error
|
||||||
LL | handle_alloc_error(Layout::for_value(&0));
|
at RUSTLIB/alloc/src/alloc.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
4: miri_start
|
||||||
|
at tests/fail/alloc/alloc_error_handler_no_std.rs:LL:CC
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,13 @@ LL | FREE();
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `std::sys::alloc::PLATFORM::<impl std::alloc::GlobalAlloc for std::alloc::System>::dealloc` at RUSTLIB/std/src/sys/alloc/PLATFORM.rs:LL:CC
|
0: std::sys::alloc::PLATFORM::dealloc
|
||||||
= note: inside `<std::alloc::System as std::alloc::Allocator>::deallocate` at RUSTLIB/std/src/alloc.rs:LL:CC
|
at RUSTLIB/std/src/sys/alloc/PLATFORM.rs:LL:CC
|
||||||
note: inside `main`
|
1: <std::alloc::System as std::alloc::Allocator>::deallocate
|
||||||
--> tests/fail/alloc/global_system_mixup.rs:LL:CC
|
at RUSTLIB/std/src/alloc.rs:LL:CC
|
||||||
|
|
2: main
|
||||||
LL | unsafe { System.deallocate(ptr, l) };
|
at tests/fail/alloc/global_system_mixup.rs:LL:CC
|
||||||
| ^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,15 @@ LL | self.1.deallocate(From::from(ptr.cast()), layout);
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `<std::boxed::Box<i32> as std::ops::Drop>::drop` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: <std::boxed::Box<i32> as std::ops::Drop>::drop
|
||||||
= note: inside `std::ptr::drop_in_place::<std::boxed::Box<i32>> - shim(Some(std::boxed::Box<i32>))` at RUSTLIB/core/src/ptr/mod.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
= note: inside `std::mem::drop::<std::boxed::Box<i32>>` at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
1: std::ptr::drop_in_place))
|
||||||
note: inside `main`
|
at RUSTLIB/core/src/ptr/mod.rs:LL:CC
|
||||||
--> tests/fail/alloc/stack_free.rs:LL:CC
|
2: std::mem::drop
|
||||||
|
|
at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
||||||
LL | drop(bad_box);
|
3: main
|
||||||
| ^^^^^^^^^^^^^
|
at tests/fail/alloc/stack_free.rs:LL:CC
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,19 +20,15 @@ help: <TAG> was later invalidated at offsets [OFFSET] by a SharedReadOnly retag
|
||||||
|
|
|
|
||||||
LL | let _: Pin<&_> = f.as_ref(); // Or: `f.as_mut().into_ref()`.
|
LL | let _: Pin<&_> = f.as_ref(); // Or: `f.as_mut().into_ref()`.
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside closure at tests/fail/async-shared-mutable.rs:LL:CC
|
0: main::{closure#0}::{closure#0}
|
||||||
= note: inside `<std::future::PollFn<{closure@tests/fail/async-shared-mutable.rs:LL:CC}> as std::future::Future>::poll` at RUSTLIB/core/src/future/poll_fn.rs:LL:CC
|
at tests/fail/async-shared-mutable.rs:LL:CC
|
||||||
note: inside closure
|
1: <std::future::PollFn<{closure@tests/fail/async-shared-mutable.rs:LL:CC}> as std::future::Future>::poll
|
||||||
--> tests/fail/async-shared-mutable.rs:LL:CC
|
at RUSTLIB/core/src/future/poll_fn.rs:LL:CC
|
||||||
|
|
2: main::{closure#0}
|
||||||
LL | .await
|
at tests/fail/async-shared-mutable.rs:LL:CC
|
||||||
| ^^^^^
|
3: main
|
||||||
note: inside `main`
|
at tests/fail/async-shared-mutable.rs:LL:CC
|
||||||
--> tests/fail/async-shared-mutable.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | assert_eq!(f.as_mut().poll(&mut cx), Poll::Pending);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,19 +28,15 @@ help: the accessed tag <TAG> later transitioned to Frozen due to a reborrow (act
|
||||||
LL | let _: Pin<&_> = f.as_ref(); // Or: `f.as_mut().into_ref()`.
|
LL | let _: Pin<&_> = f.as_ref(); // Or: `f.as_mut().into_ref()`.
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
= help: this transition corresponds to a loss of write permissions
|
= help: this transition corresponds to a loss of write permissions
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside closure at tests/fail/async-shared-mutable.rs:LL:CC
|
0: main::{closure#0}::{closure#0}
|
||||||
= note: inside `<std::future::PollFn<{closure@tests/fail/async-shared-mutable.rs:LL:CC}> as std::future::Future>::poll` at RUSTLIB/core/src/future/poll_fn.rs:LL:CC
|
at tests/fail/async-shared-mutable.rs:LL:CC
|
||||||
note: inside closure
|
1: <std::future::PollFn<{closure@tests/fail/async-shared-mutable.rs:LL:CC}> as std::future::Future>::poll
|
||||||
--> tests/fail/async-shared-mutable.rs:LL:CC
|
at RUSTLIB/core/src/future/poll_fn.rs:LL:CC
|
||||||
|
|
2: main::{closure#0}
|
||||||
LL | .await
|
at tests/fail/async-shared-mutable.rs:LL:CC
|
||||||
| ^^^^^
|
3: main
|
||||||
note: inside `main`
|
at tests/fail/async-shared-mutable.rs:LL:CC
|
||||||
--> tests/fail/async-shared-mutable.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | assert_eq!(f.as_mut().poll(&mut cx), Poll::Pending);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | fn safe(x: &mut i32, y: &mut i32) {
|
LL | fn safe(x: &mut i32, y: &mut i32) {
|
||||||
| ^
|
| ^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `safe` at tests/fail/both_borrows/aliasing_mut1.rs:LL:CC
|
0: safe
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/aliasing_mut1.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/aliasing_mut1.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/aliasing_mut1.rs:LL:CC
|
||||||
LL | safe_raw(xraw, xraw);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,11 @@ help: the accessed tag <TAG> later transitioned to Reserved (conflicted) due to
|
||||||
LL | fn safe(x: &mut i32, y: &mut i32) {
|
LL | fn safe(x: &mut i32, y: &mut i32) {
|
||||||
| ^
|
| ^
|
||||||
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `safe` at tests/fail/both_borrows/aliasing_mut1.rs:LL:CC
|
0: safe
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/aliasing_mut1.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/aliasing_mut1.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/aliasing_mut1.rs:LL:CC
|
||||||
LL | safe_raw(xraw, xraw);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | fn safe(x: &i32, y: &mut i32) {
|
LL | fn safe(x: &i32, y: &mut i32) {
|
||||||
| ^
|
| ^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `safe` at tests/fail/both_borrows/aliasing_mut2.rs:LL:CC
|
0: safe
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/aliasing_mut2.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/aliasing_mut2.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/aliasing_mut2.rs:LL:CC
|
||||||
LL | safe_raw(xshr, xraw);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,11 @@ help: the accessed tag <TAG> later transitioned to Reserved (conflicted) due to
|
||||||
LL | let _v = *x;
|
LL | let _v = *x;
|
||||||
| ^^
|
| ^^
|
||||||
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `safe` at tests/fail/both_borrows/aliasing_mut2.rs:LL:CC
|
0: safe
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/aliasing_mut2.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/aliasing_mut2.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/aliasing_mut2.rs:LL:CC
|
||||||
LL | safe_raw(xshr, xraw);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> was later invalidated at offsets [0x0..0x4] by a Unique function-ent
|
||||||
|
|
|
|
||||||
LL | safe_raw(xraw, xshr);
|
LL | safe_raw(xraw, xshr);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `safe` at tests/fail/both_borrows/aliasing_mut3.rs:LL:CC
|
0: safe
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/aliasing_mut3.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/aliasing_mut3.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/aliasing_mut3.rs:LL:CC
|
||||||
LL | safe_raw(xraw, xshr);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,11 @@ help: the accessed tag <TAG> later transitioned to Reserved (conflicted) due to
|
||||||
LL | fn safe(x: &mut i32, y: &i32) {
|
LL | fn safe(x: &mut i32, y: &i32) {
|
||||||
| ^
|
| ^
|
||||||
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `safe` at tests/fail/both_borrows/aliasing_mut3.rs:LL:CC
|
0: safe
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/aliasing_mut3.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/aliasing_mut3.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/aliasing_mut3.rs:LL:CC
|
||||||
LL | safe_raw(xraw, xshr);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | fn safe(x: &i32, y: &mut Cell<i32>) {
|
LL | fn safe(x: &i32, y: &mut Cell<i32>) {
|
||||||
| ^
|
| ^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `safe` at tests/fail/both_borrows/aliasing_mut4.rs:LL:CC
|
0: safe
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/aliasing_mut4.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/aliasing_mut4.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/aliasing_mut4.rs:LL:CC
|
||||||
LL | safe_raw(xshr, xraw as *mut _);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,20 +19,17 @@ help: the protected tag <TAG> was created here, in the initial state Frozen
|
||||||
|
|
|
|
||||||
LL | fn safe(x: &i32, y: &mut Cell<i32>) {
|
LL | fn safe(x: &i32, y: &mut Cell<i32>) {
|
||||||
| ^
|
| ^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `std::mem::replace::<i32>` at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
0: std::mem::replace
|
||||||
= note: inside `std::cell::Cell::<i32>::replace` at RUSTLIB/core/src/cell.rs:LL:CC
|
at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
||||||
= note: inside `std::cell::Cell::<i32>::set` at RUSTLIB/core/src/cell.rs:LL:CC
|
1: std::cell::Cell::replace
|
||||||
note: inside `safe`
|
at RUSTLIB/core/src/cell.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/aliasing_mut4.rs:LL:CC
|
2: std::cell::Cell::set
|
||||||
|
|
at RUSTLIB/core/src/cell.rs:LL:CC
|
||||||
LL | y.set(1);
|
3: safe
|
||||||
| ^^^^^^^^
|
at tests/fail/both_borrows/aliasing_mut4.rs:LL:CC
|
||||||
note: inside `main`
|
4: main
|
||||||
--> tests/fail/both_borrows/aliasing_mut4.rs:LL:CC
|
at tests/fail/both_borrows/aliasing_mut4.rs:LL:CC
|
||||||
|
|
|
||||||
LL | safe_raw(xshr, xraw as *mut _);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,18 +16,13 @@ help: <TAG> was later invalidated at offsets [0x0..0x4] by a write access
|
||||||
|
|
|
|
||||||
LL | *our = 5;
|
LL | *our = 5;
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `unknown_code_2` at tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
0: unknown_code_2
|
||||||
note: inside `demo_box_advanced_unique`
|
at tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
1: demo_box_advanced_unique
|
||||||
|
|
at tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
||||||
LL | unknown_code_2();
|
2: main
|
||||||
| ^^^^^^^^^^^^^^^^
|
at tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | demo_box_advanced_unique(Box::new(0));
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,18 +18,13 @@ help: the accessed tag <TAG> later transitioned to Disabled due to a foreign wri
|
||||||
LL | *our = 5;
|
LL | *our = 5;
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
= help: this transition corresponds to a loss of read permissions
|
= help: this transition corresponds to a loss of read permissions
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `unknown_code_2` at tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
0: unknown_code_2
|
||||||
note: inside `demo_box_advanced_unique`
|
at tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
1: demo_box_advanced_unique
|
||||||
|
|
at tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
||||||
LL | unknown_code_2();
|
2: main
|
||||||
| ^^^^^^^^^^^^^^^^
|
at tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/box_exclusive_violation1.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | demo_box_advanced_unique(Box::new(0));
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | unsafe fn test(mut x: Box<i32>, y: *const i32) -> i32 {
|
LL | unsafe fn test(mut x: Box<i32>, y: *const i32) -> i32 {
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `test` at tests/fail/both_borrows/box_noalias_violation.rs:LL:CC
|
0: test
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/box_noalias_violation.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/box_noalias_violation.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/box_noalias_violation.rs:LL:CC
|
||||||
LL | test(Box::from_raw(ptr), ptr);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,11 @@ help: the protected tag <TAG> later transitioned to Unique due to a child write
|
||||||
LL | *x = 5;
|
LL | *x = 5;
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
= help: this transition corresponds to the first write to a 2-phase borrowed mutable reference
|
= help: this transition corresponds to the first write to a 2-phase borrowed mutable reference
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `test` at tests/fail/both_borrows/box_noalias_violation.rs:LL:CC
|
0: test
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/box_noalias_violation.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/box_noalias_violation.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/box_noalias_violation.rs:LL:CC
|
||||||
LL | test(Box::from_raw(ptr), ptr);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,13 +22,11 @@ help: <TAG> was later invalidated at offsets [0x0..0x10] by a Unique retag
|
||||||
|
|
|
|
||||||
LL | from_raw_parts_mut(ptr.offset(mid as isize), len - mid),
|
LL | from_raw_parts_mut(ptr.offset(mid as isize), len - mid),
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `safe::split_at_mut::<i32>` at tests/fail/both_borrows/buggy_split_at_mut.rs:LL:CC
|
0: safe::split_at_mut
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/buggy_split_at_mut.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/buggy_split_at_mut.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/buggy_split_at_mut.rs:LL:CC
|
||||||
LL | let (a, b) = safe::split_at_mut(&mut array, 0);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | fn foo(a: &mut u32, y: *mut u32) -> u32 {
|
LL | fn foo(a: &mut u32, y: *mut u32) -> u32 {
|
||||||
| ^
|
| ^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `foo` at tests/fail/both_borrows/illegal_write6.rs:LL:CC
|
0: foo
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/illegal_write6.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/illegal_write6.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/illegal_write6.rs:LL:CC
|
||||||
LL | foo(x, p);
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,11 @@ help: the protected tag <TAG> later transitioned to Unique due to a child write
|
||||||
LL | *a = 1;
|
LL | *a = 1;
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
= help: this transition corresponds to the first write to a 2-phase borrowed mutable reference
|
= help: this transition corresponds to the first write to a 2-phase borrowed mutable reference
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `foo` at tests/fail/both_borrows/illegal_write6.rs:LL:CC
|
0: foo
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/illegal_write6.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/illegal_write6.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/illegal_write6.rs:LL:CC
|
||||||
LL | foo(x, p);
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | fn inner(x: *mut i32, _y: &i32) {
|
LL | fn inner(x: *mut i32, _y: &i32) {
|
||||||
| ^^
|
| ^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `inner` at tests/fail/both_borrows/invalidate_against_protector2.rs:LL:CC
|
0: inner
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/invalidate_against_protector2.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/invalidate_against_protector2.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/invalidate_against_protector2.rs:LL:CC
|
||||||
LL | inner(xraw, xref);
|
|
||||||
| ^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,11 @@ help: the protected tag <TAG> was created here, in the initial state Frozen
|
||||||
|
|
|
|
||||||
LL | fn inner(x: *mut i32, _y: &i32) {
|
LL | fn inner(x: *mut i32, _y: &i32) {
|
||||||
| ^^
|
| ^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `inner` at tests/fail/both_borrows/invalidate_against_protector2.rs:LL:CC
|
0: inner
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/invalidate_against_protector2.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/invalidate_against_protector2.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/invalidate_against_protector2.rs:LL:CC
|
||||||
LL | inner(xraw, xref);
|
|
||||||
| ^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | fn inner(x: *mut i32, _y: &i32) {
|
LL | fn inner(x: *mut i32, _y: &i32) {
|
||||||
| ^^
|
| ^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `inner` at tests/fail/both_borrows/invalidate_against_protector3.rs:LL:CC
|
0: inner
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/invalidate_against_protector3.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/invalidate_against_protector3.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/invalidate_against_protector3.rs:LL:CC
|
||||||
LL | inner(ptr, &*ptr);
|
|
||||||
| ^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,11 @@ help: the protected tag <TAG> was created here, in the initial state Frozen
|
||||||
|
|
|
|
||||||
LL | fn inner(x: *mut i32, _y: &i32) {
|
LL | fn inner(x: *mut i32, _y: &i32) {
|
||||||
| ^^
|
| ^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `inner` at tests/fail/both_borrows/invalidate_against_protector3.rs:LL:CC
|
0: inner
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/invalidate_against_protector3.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/invalidate_against_protector3.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/invalidate_against_protector3.rs:LL:CC
|
||||||
LL | inner(ptr, &*ptr);
|
|
||||||
| ^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,13 @@ help: ALLOC was allocated here:
|
||||||
|
|
|
|
||||||
LL | let ptr = Box::into_raw(Box::new(0u16));
|
LL | let ptr = Box::into_raw(Box::new(0u16));
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `std::boxed::Box::<u32>::from_raw_in` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: std::boxed::Box::from_raw_in
|
||||||
= note: inside `std::boxed::Box::<u32>::from_raw` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::boxed::Box::from_raw
|
||||||
--> tests/fail/both_borrows/issue-miri-1050-1.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
|
|
2: main
|
||||||
LL | drop(Box::from_raw(ptr as *mut u32));
|
at tests/fail/both_borrows/issue-miri-1050-1.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,13 @@ help: ALLOC was allocated here:
|
||||||
|
|
|
|
||||||
LL | let ptr = Box::into_raw(Box::new(0u16));
|
LL | let ptr = Box::into_raw(Box::new(0u16));
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `std::boxed::Box::<u32>::from_raw_in` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: std::boxed::Box::from_raw_in
|
||||||
= note: inside `std::boxed::Box::<u32>::from_raw` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::boxed::Box::from_raw
|
||||||
--> tests/fail/both_borrows/issue-miri-1050-1.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
|
|
2: main
|
||||||
LL | drop(Box::from_raw(ptr as *mut u32));
|
at tests/fail/both_borrows/issue-miri-1050-1.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,13 @@ LL | Box(unsafe { Unique::new_unchecked(raw) }, alloc)
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `std::boxed::Box::<i32>::from_raw_in` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: std::boxed::Box::from_raw_in
|
||||||
= note: inside `std::boxed::Box::<i32>::from_raw` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::boxed::Box::from_raw
|
||||||
--> tests/fail/both_borrows/issue-miri-1050-2.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
|
|
2: main
|
||||||
LL | drop(Box::from_raw(ptr.as_ptr()));
|
at tests/fail/both_borrows/issue-miri-1050-2.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,13 @@ LL | Box(unsafe { Unique::new_unchecked(raw) }, alloc)
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `std::boxed::Box::<i32>::from_raw_in` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: std::boxed::Box::from_raw_in
|
||||||
= note: inside `std::boxed::Box::<i32>::from_raw` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
note: inside `main`
|
1: std::boxed::Box::from_raw
|
||||||
--> tests/fail/both_borrows/issue-miri-1050-2.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
|
|
2: main
|
||||||
LL | drop(Box::from_raw(ptr.as_ptr()));
|
at tests/fail/both_borrows/issue-miri-1050-2.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,18 +16,13 @@ help: <TAG> was later invalidated at offsets [0x0..0x4] by a write access
|
||||||
|
|
|
|
||||||
LL | *our = 5;
|
LL | *our = 5;
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `unknown_code_2` at tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
0: unknown_code_2
|
||||||
note: inside `demo_mut_advanced_unique`
|
at tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
1: demo_mut_advanced_unique
|
||||||
|
|
at tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
||||||
LL | unknown_code_2();
|
2: main
|
||||||
| ^^^^^^^^^^^^^^^^
|
at tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | demo_mut_advanced_unique(&mut 0);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,18 +18,13 @@ help: the accessed tag <TAG> later transitioned to Disabled due to a foreign wri
|
||||||
LL | *our = 5;
|
LL | *our = 5;
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
= help: this transition corresponds to a loss of read permissions
|
= help: this transition corresponds to a loss of read permissions
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `unknown_code_2` at tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
0: unknown_code_2
|
||||||
note: inside `demo_mut_advanced_unique`
|
at tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
1: demo_mut_advanced_unique
|
||||||
|
|
at tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
||||||
LL | unknown_code_2();
|
2: main
|
||||||
| ^^^^^^^^^^^^^^^^
|
at tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/mut_exclusive_violation1.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | demo_mut_advanced_unique(&mut 0);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,27 +16,17 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | fn dealloc_while_running(_n: Newtype<'_>, dealloc: impl FnOnce()) {
|
LL | fn dealloc_while_running(_n: Newtype<'_>, dealloc: impl FnOnce()) {
|
||||||
| ^^
|
| ^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `std::boxed::Box::<i32>::from_raw_in` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: std::boxed::Box::from_raw_in
|
||||||
= note: inside `std::boxed::Box::<i32>::from_raw` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
note: inside closure
|
1: std::boxed::Box::from_raw
|
||||||
--> tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
|
|
2: main::{closure#0}
|
||||||
LL | || drop(Box::from_raw(ptr)),
|
at tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
3: dealloc_while_running
|
||||||
note: inside `dealloc_while_running::<{closure@tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC}>`
|
at tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
4: main
|
||||||
|
|
at tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
||||||
LL | dealloc();
|
|
||||||
| ^^^^^^^^^
|
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | / dealloc_while_running(
|
|
||||||
LL | | Newtype(&mut *ptr, 0),
|
|
||||||
LL | | || drop(Box::from_raw(ptr)),
|
|
||||||
LL | | )
|
|
||||||
| |_________^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,28 +25,19 @@ help: the protected tag <TAG> later transitioned to Reserved (conflicted) due to
|
||||||
LL | || drop(Box::from_raw(ptr)),
|
LL | || drop(Box::from_raw(ptr)),
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `<std::boxed::Box<i32> as std::ops::Drop>::drop` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: <std::boxed::Box<i32> as std::ops::Drop>::drop
|
||||||
= note: inside `std::ptr::drop_in_place::<std::boxed::Box<i32>> - shim(Some(std::boxed::Box<i32>))` at RUSTLIB/core/src/ptr/mod.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
= note: inside `std::mem::drop::<std::boxed::Box<i32>>` at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
1: std::ptr::drop_in_place))
|
||||||
note: inside closure
|
at RUSTLIB/core/src/ptr/mod.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
2: std::mem::drop
|
||||||
|
|
at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
||||||
LL | || drop(Box::from_raw(ptr)),
|
3: main::{closure#0}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
at tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
||||||
note: inside `dealloc_while_running::<{closure@tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC}>`
|
4: dealloc_while_running
|
||||||
--> tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
at tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
||||||
|
|
5: main
|
||||||
LL | dealloc();
|
at tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
||||||
| ^^^^^^^^^
|
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/newtype_pair_retagging.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | / dealloc_while_running(
|
|
||||||
LL | | Newtype(&mut *ptr, 0),
|
|
||||||
LL | | || drop(Box::from_raw(ptr)),
|
|
||||||
LL | | )
|
|
||||||
| |_________^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,27 +16,17 @@ help: <TAG> is this argument
|
||||||
|
|
|
|
||||||
LL | fn dealloc_while_running(_n: Newtype<'_>, dealloc: impl FnOnce()) {
|
LL | fn dealloc_while_running(_n: Newtype<'_>, dealloc: impl FnOnce()) {
|
||||||
| ^^
|
| ^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `std::boxed::Box::<i32>::from_raw_in` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: std::boxed::Box::from_raw_in
|
||||||
= note: inside `std::boxed::Box::<i32>::from_raw` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
note: inside closure
|
1: std::boxed::Box::from_raw
|
||||||
--> tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
|
|
2: main::{closure#0}
|
||||||
LL | || drop(Box::from_raw(ptr)),
|
at tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
3: dealloc_while_running
|
||||||
note: inside `dealloc_while_running::<{closure@tests/fail/both_borrows/newtype_retagging.rs:LL:CC}>`
|
at tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
4: main
|
||||||
|
|
at tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
||||||
LL | dealloc();
|
|
||||||
| ^^^^^^^^^
|
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | / dealloc_while_running(
|
|
||||||
LL | | Newtype(&mut *ptr),
|
|
||||||
LL | | || drop(Box::from_raw(ptr)),
|
|
||||||
LL | | )
|
|
||||||
| |_________^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,28 +25,19 @@ help: the protected tag <TAG> later transitioned to Reserved (conflicted) due to
|
||||||
LL | || drop(Box::from_raw(ptr)),
|
LL | || drop(Box::from_raw(ptr)),
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
= help: this transition corresponds to a temporary loss of write permissions until function exit
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `<std::boxed::Box<i32> as std::ops::Drop>::drop` at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
0: <std::boxed::Box<i32> as std::ops::Drop>::drop
|
||||||
= note: inside `std::ptr::drop_in_place::<std::boxed::Box<i32>> - shim(Some(std::boxed::Box<i32>))` at RUSTLIB/core/src/ptr/mod.rs:LL:CC
|
at RUSTLIB/alloc/src/boxed.rs:LL:CC
|
||||||
= note: inside `std::mem::drop::<std::boxed::Box<i32>>` at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
1: std::ptr::drop_in_place))
|
||||||
note: inside closure
|
at RUSTLIB/core/src/ptr/mod.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
2: std::mem::drop
|
||||||
|
|
at RUSTLIB/core/src/mem/mod.rs:LL:CC
|
||||||
LL | || drop(Box::from_raw(ptr)),
|
3: main::{closure#0}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
at tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
||||||
note: inside `dealloc_while_running::<{closure@tests/fail/both_borrows/newtype_retagging.rs:LL:CC}>`
|
4: dealloc_while_running
|
||||||
--> tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
at tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
||||||
|
|
5: main
|
||||||
LL | dealloc();
|
at tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
||||||
| ^^^^^^^^^
|
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/newtype_retagging.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | / dealloc_while_running(
|
|
||||||
LL | | Newtype(&mut *ptr),
|
|
||||||
LL | | || drop(Box::from_raw(ptr)),
|
|
||||||
LL | | )
|
|
||||||
| |_________^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,13 +14,17 @@ LL | let _r = &mut *p;
|
||||||
= help: therefore from the perspective of data races, a retag has the same implications as a read or write
|
= help: therefore from the perspective of data races, a retag has the same implications as a read or write
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE (of the first span) on thread `unnamed-ID`:
|
= note: this is on thread `unnamed-ID`
|
||||||
= note: inside `thread_2` at tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
= note: stack backtrace:
|
||||||
note: inside closure
|
0: thread_2
|
||||||
|
at tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
||||||
|
1: main::{closure#1}
|
||||||
|
at tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
||||||
|
note: the last function in that backtrace got called indirectly due to this code
|
||||||
--> tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
--> tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let t2 = std::thread::spawn(move || thread_2(p));
|
LL | let t2 = std::thread::spawn(move || thread_2(p));
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,13 +14,17 @@ LL | let _r = &mut *p;
|
||||||
= help: therefore from the perspective of data races, a retag has the same implications as a read or write
|
= help: therefore from the perspective of data races, a retag has the same implications as a read or write
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE (of the first span) on thread `unnamed-ID`:
|
= note: this is on thread `unnamed-ID`
|
||||||
= note: inside `thread_2` at tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
= note: stack backtrace:
|
||||||
note: inside closure
|
0: thread_2
|
||||||
|
at tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
||||||
|
1: main::{closure#1}
|
||||||
|
at tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
||||||
|
note: the last function in that backtrace got called indirectly due to this code
|
||||||
--> tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
--> tests/fail/both_borrows/retag_data_race_write.rs:LL:CC
|
||||||
|
|
|
|
||||||
LL | let t2 = std::thread::spawn(move || thread_2(p));
|
LL | let t2 = std::thread::spawn(move || thread_2(p));
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> was later invalidated at offsets [0x4..0x8] by a write access
|
||||||
|
|
|
|
||||||
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `foo` at tests/fail/both_borrows/return_invalid_shr.rs:LL:CC
|
0: foo
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/return_invalid_shr.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/return_invalid_shr.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/return_invalid_shr.rs:LL:CC
|
||||||
LL | foo(&mut (1, 2));
|
|
||||||
| ^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,11 @@ help: the accessed tag <TAG> later transitioned to Disabled due to a foreign wri
|
||||||
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
= help: this transition corresponds to a loss of read permissions
|
= help: this transition corresponds to a loss of read permissions
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `foo` at tests/fail/both_borrows/return_invalid_shr.rs:LL:CC
|
0: foo
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/return_invalid_shr.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/return_invalid_shr.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/return_invalid_shr.rs:LL:CC
|
||||||
LL | foo(&mut (1, 2));
|
|
||||||
| ^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,11 @@ help: <TAG> was later invalidated at offsets [0x4..0x8] by a write access
|
||||||
|
|
|
|
||||||
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `foo` at tests/fail/both_borrows/return_invalid_shr_option.rs:LL:CC
|
0: foo
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/return_invalid_shr_option.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/return_invalid_shr_option.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/return_invalid_shr_option.rs:LL:CC
|
||||||
LL | match foo(&mut (1, 2)) {
|
|
||||||
| ^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,11 @@ help: the accessed tag <TAG> later transitioned to Disabled due to a foreign wri
|
||||||
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
= help: this transition corresponds to a loss of read permissions
|
= help: this transition corresponds to a loss of read permissions
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `foo` at tests/fail/both_borrows/return_invalid_shr_option.rs:LL:CC
|
0: foo
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/return_invalid_shr_option.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/return_invalid_shr_option.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/return_invalid_shr_option.rs:LL:CC
|
||||||
LL | match foo(&mut (1, 2)) {
|
|
||||||
| ^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,11 @@ help: <TAG> was later invalidated at offsets [0x4..0x8] by a write access
|
||||||
|
|
|
|
||||||
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `foo` at tests/fail/both_borrows/return_invalid_shr_tuple.rs:LL:CC
|
0: foo
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/return_invalid_shr_tuple.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/return_invalid_shr_tuple.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/return_invalid_shr_tuple.rs:LL:CC
|
||||||
LL | foo(&mut (1, 2)).0;
|
|
||||||
| ^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,11 @@ help: the accessed tag <TAG> later transitioned to Disabled due to a foreign wri
|
||||||
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
LL | unsafe { *xraw = (42, 23) }; // unfreeze
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
= help: this transition corresponds to a loss of read permissions
|
= help: this transition corresponds to a loss of read permissions
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `foo` at tests/fail/both_borrows/return_invalid_shr_tuple.rs:LL:CC
|
0: foo
|
||||||
note: inside `main`
|
at tests/fail/both_borrows/return_invalid_shr_tuple.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/return_invalid_shr_tuple.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/both_borrows/return_invalid_shr_tuple.rs:LL:CC
|
||||||
LL | foo(&mut (1, 2)).0;
|
|
||||||
| ^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,18 +11,13 @@ help: <TAG> was created by a SharedReadOnly retag at offsets [0x0..0x4]
|
||||||
|
|
|
|
||||||
LL | *(x as *const i32 as *mut i32) = 7;
|
LL | *(x as *const i32 as *mut i32) = 7;
|
||||||
| ^
|
| ^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `unknown_code` at tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
0: unknown_code
|
||||||
note: inside `foo`
|
at tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
1: foo
|
||||||
|
|
at tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
||||||
LL | unknown_code(&*x);
|
2: main
|
||||||
| ^^^^^^^^^^^^^^^^^
|
at tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | println!("{}", foo(&mut 0));
|
|
||||||
| ^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,18 +12,13 @@ help: the accessed tag <TAG> was created here, in the initial state Frozen
|
||||||
|
|
|
|
||||||
LL | fn unknown_code(x: &i32) {
|
LL | fn unknown_code(x: &i32) {
|
||||||
| ^
|
| ^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `unknown_code` at tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
0: unknown_code
|
||||||
note: inside `foo`
|
at tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
||||||
--> tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
1: foo
|
||||||
|
|
at tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
||||||
LL | unknown_code(&*x);
|
2: main
|
||||||
| ^^^^^^^^^^^^^^^^^
|
at tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/both_borrows/shr_frozen_violation1.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | println!("{}", foo(&mut 0));
|
|
||||||
| ^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ help: <TAG> was later invalidated at offsets [0x0..0x1] by a Unique retag
|
||||||
|
|
|
|
||||||
LL | let res = helper(val, ptr);
|
LL | let res = helper(val, ptr);
|
||||||
| ^^^
|
| ^^^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside `helper` at tests/fail/box-cell-alias.rs:LL:CC
|
0: helper
|
||||||
note: inside `main`
|
at tests/fail/box-cell-alias.rs:LL:CC
|
||||||
--> tests/fail/box-cell-alias.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/box-cell-alias.rs:LL:CC
|
||||||
LL | let res = helper(val, ptr);
|
|
||||||
| ^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | match r {
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside closure at tests/fail/closures/uninhabited-variant.rs:LL:CC
|
0: main::{closure#0}
|
||||||
note: inside `main`
|
at tests/fail/closures/uninhabited-variant.rs:LL:CC
|
||||||
--> tests/fail/closures/uninhabited-variant.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/closures/uninhabited-variant.rs:LL:CC
|
||||||
LL | f();
|
|
||||||
| ^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,9 @@
|
||||||
//@normalize-stderr-test: "LL \| .*" -> "LL | $$CODE"
|
//@normalize-stderr-test: "LL \| .*" -> "LL | $$CODE"
|
||||||
//@normalize-stderr-test: "\| +\^+" -> "| ^"
|
//@normalize-stderr-test: "\| +\^+" -> "| ^"
|
||||||
//@normalize-stderr-test: "\n *= note:.*" -> ""
|
//@normalize-stderr-test: "\n *= note:.*" -> ""
|
||||||
|
//@normalize-stderr-test: "\n *\d+:.*\n *at .*" -> ""
|
||||||
// On macOS we use chekced pthread mutexes which changes the error
|
// On macOS we use chekced pthread mutexes which changes the error
|
||||||
//@normalize-stderr-test: "this thread got stuck here" -> "thread `main` got stuck here"
|
//@normalize-stderr-test: "a thread got stuck here" -> "thread `main` got stuck here"
|
||||||
//@normalize-stderr-test: "a thread deadlocked" -> "the evaluated program deadlocked"
|
//@normalize-stderr-test: "a thread deadlocked" -> "the evaluated program deadlocked"
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,8 @@ error: the evaluated program deadlocked
|
||||||
--> RUSTLIB/std/$FILE:LL:CC
|
--> RUSTLIB/std/$FILE:LL:CC
|
||||||
|
|
|
|
||||||
LL | $CODE
|
LL | $CODE
|
||||||
| ^ thread `main` got stuck here
|
| ^ thread got stuck here
|
||||||
|
|
|
|
||||||
note: inside `main`
|
|
||||||
--> tests/fail/concurrency/mutex-leak-move-deadlock.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | $CODE
|
|
||||||
| ^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,19 +16,15 @@ help: ALLOC was deallocated here:
|
||||||
|
|
|
|
||||||
LL | }; // *deallocate* coroutine_iterator
|
LL | }; // *deallocate* coroutine_iterator
|
||||||
| ^
|
| ^
|
||||||
= note: BACKTRACE (of the first span):
|
= note: stack backtrace:
|
||||||
= note: inside closure at tests/fail/coroutine-pinned-moved.rs:LL:CC
|
0: firstn::{closure#0}
|
||||||
note: inside `<CoroutineIteratorAdapter<{static coroutine@tests/fail/coroutine-pinned-moved.rs:LL:CC}> as std::iter::Iterator>::next`
|
at tests/fail/coroutine-pinned-moved.rs:LL:CC
|
||||||
--> tests/fail/coroutine-pinned-moved.rs:LL:CC
|
1: <CoroutineIteratorAdapter<{static coroutine@tests/fail/coroutine-pinned-moved.rs:LL:CC}> as std::iter::Iterator>::next
|
||||||
|
|
at tests/fail/coroutine-pinned-moved.rs:LL:CC
|
||||||
LL | match me.resume(()) {
|
2: std::boxed::iter::next
|
||||||
| ^^^^^^^^^^^^^
|
at RUSTLIB/alloc/src/boxed/iter.rs:LL:CC
|
||||||
= note: inside `std::boxed::iter::<impl std::iter::Iterator for std::boxed::Box<CoroutineIteratorAdapter<{static coroutine@tests/fail/coroutine-pinned-moved.rs:LL:CC}>>>::next` at RUSTLIB/alloc/src/boxed/iter.rs:LL:CC
|
3: main
|
||||||
note: inside `main`
|
at tests/fail/coroutine-pinned-moved.rs:LL:CC
|
||||||
--> tests/fail/coroutine-pinned-moved.rs:LL:CC
|
|
||||||
|
|
|
||||||
LL | coroutine_iterator_2.next(); // and use moved value
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | unsafe { &(*x).0 as *const i32 }
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `via_ref` at tests/fail/dangling_pointers/dangling_pointer_to_raw_pointer.rs:LL:CC
|
0: via_ref
|
||||||
note: inside `main`
|
at tests/fail/dangling_pointers/dangling_pointer_to_raw_pointer.rs:LL:CC
|
||||||
--> tests/fail/dangling_pointers/dangling_pointer_to_raw_pointer.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/dangling_pointers/dangling_pointer_to_raw_pointer.rs:LL:CC
|
||||||
LL | via_ref(ptr); // this is not
|
|
||||||
| ^^^^^^^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ LL | let _ref = unsafe { &mut *(LEAK as *mut i32) };
|
||||||
|
|
|
|
||||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||||
= note: BACKTRACE:
|
= note: stack backtrace:
|
||||||
= note: inside `evil` at tests/fail/dangling_pointers/storage_dead_dangling.rs:LL:CC
|
0: evil
|
||||||
note: inside `main`
|
at tests/fail/dangling_pointers/storage_dead_dangling.rs:LL:CC
|
||||||
--> tests/fail/dangling_pointers/storage_dead_dangling.rs:LL:CC
|
1: main
|
||||||
|
|
at tests/fail/dangling_pointers/storage_dead_dangling.rs:LL:CC
|
||||||
LL | evil();
|
|
||||||
| ^^^^^^
|
|
||||||
|
|
||||||
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
|
||||||
|
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue