Skip to content

Commit 8ba828b

Browse files
committed
add panic location to 'panicked while processing panic'
1 parent e3df96c commit 8ba828b

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

library/std/src/panicking.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -746,7 +746,13 @@ fn rust_panic_with_hook(
746746
panic_count::MustAbort::PanicInHook => {
747747
// Don't try to print the message in this case
748748
// - perhaps that is causing the recursive panics.
749-
rtprintpanic!("thread panicked while processing panic. aborting.\n");
749+
let panicinfo = PanicInfo::internal_constructor(
750+
None, // no message
751+
location, // but we want to show the location!
752+
can_unwind,
753+
force_no_backtrace,
754+
);
755+
rtprintpanic!("{panicinfo}\nthread panicked while processing panic. aborting.\n");
750756
}
751757
panic_count::MustAbort::AlwaysAbort => {
752758
// Unfortunately, this does not print a backtrace, because creating
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Checks what happens when formatting the panic message panics.
2+
3+
//@ run-fail
4+
//@ exec-env:RUST_BACKTRACE=0
5+
//@ check-run-results
6+
//@ error-pattern: panicked while processing panic
7+
//@ normalize-stderr-test: "\n +[0-9]+:[^\n]+" -> ""
8+
//@ normalize-stderr-test: "\n +at [^\n]+" -> ""
9+
//@ normalize-stderr-test: "(core/src/panicking\.rs):[0-9]+:[0-9]+" -> "$1:$$LINE:$$COL"
10+
//@ ignore-emscripten "RuntimeError" junk in output
11+
12+
use std::fmt::{Display, self};
13+
14+
struct MyStruct;
15+
16+
impl Display for MyStruct {
17+
fn fmt(&self, _: &mut fmt::Formatter<'_>) -> fmt::Result {
18+
todo!()
19+
}
20+
}
21+
22+
fn main() {
23+
let instance = MyStruct;
24+
panic!("this is wrong: {}", instance);
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
panicked at $DIR/panic-in-message-fmt.rs:18:9
2+
thread panicked while processing panic. aborting.

0 commit comments

Comments
 (0)