rust-lang / rust-lang/rust

Double panic on MSVC no longer prints abort message

Open
#123,470 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-panic C-bug O-windows P-medium regression-from-stable-to-stable T-compiler
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

I tried this code:

struct DropPanic;
impl Drop for DropPanic {
    fn drop(&mut self) {
        panic!("panic in drop");
    }
}

fn main() {
    let _bomb = DropPanic;
    panic!("panic in main");
}

I expected to see this happen: I would see a "panic in a destructor during cleanup" message and the program would abort.

Instead, this happened: The second panic prints a full backtrace and then the program exits with STATUS_STACK_BUFFER_OVERRUN (that's a __fastfail; before, it was STATUS_ILLEGAL_INSTRUCTION: intrinsics::abort instead of process::abort.)

Meta

I didn't bisect to the specific release that changed this, but it's due to the change to allow well-nested unwinds with catch_unwind in destructors during cleanup. I also didn't test whether windows-gnu also behaves like this (if it still uses SEH unwinding, it does).

rustc 1.56.1 (59eed8a2a 2021-11-01) output (abort message)

thread 'main' panicked at 'panic in main', src\main.rs:10:5
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:517
   1: core::panicking::panic_fmt
             at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\core\src\panicking.rs:101
   2: cad97_playground::main
             at .\src\main.rs:10
   3: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
             at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\library\core\src\ops\function.rs:227
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'main' panicked at 'panic in drop', src\main.rs:4:9
stack backtrace:
   0:     0x7ff60b526cfe - std::backtrace_rs::backtrace::dbghelp::trace
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\..\..\backtrace\src\backtrace\dbghelp.rs:98
   1:     0x7ff60b526cfe - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ff60b526cfe - std::sys_common::backtrace::_print_fmt
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\sys_common\backtrace.rs:67
   3:     0x7ff60b526cfe - std::sys_common::backtrace::_print::impl$0::fmt
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\sys_common\backtrace.rs:46
   4:     0x7ff60b53527a - core::fmt::write
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\core\src\fmt\mod.rs:1150
   5:     0x7ff60b524fa8 - std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\io\mod.rs:1667
   6:     0x7ff60b528f16 - std::sys_common::backtrace::_print
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\sys_common\backtrace.rs:49
   7:     0x7ff60b528f16 - std::sys_common::backtrace::print
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\sys_common\backtrace.rs:36
   8:     0x7ff60b528f16 - std::panicking::default_hook::closure$1
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:210
   9:     0x7ff60b528a04 - std::panicking::default_hook
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:227
  10:     0x7ff60b529575 - std::panicking::rust_panic_with_hook
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:624
  11:     0x7ff60b52912f - std::panicking::begin_panic_handler::closure$0
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:519
  12:     0x7ff60b527647 - std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure$0,never$>
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\sys_common\backtrace.rs:141
  13:     0x7ff60b5290b9 - std::panicking::begin_panic_handler
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:517
  14:     0x7ff60b539ac0 - core::panicking::panic_fmt
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\core\src\panicking.rs:101
  15:     0x7ff60b52139f - cad97_playground::impl$0::drop
                               at D:\git\cad97\playground\src\main.rs:4
  16:     0x7ff60b52132e - core::ptr::drop_in_place<cad97_playground::DropPanic>
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\library\core\src\ptr\mod.rs:188
  17:     0x7ff60b5210c7 - cad97_playground::main
                               at D:\git\cad97\playground\src\main.rs:11
  18:     0x7ffb62171060 - <unknown>
  19:     0x7ffb621753ea - is_exception_typeof
  20:     0x7ffb6217fb80 - _C_specific_handler
  21:     0x7ffb621745f0 - is_exception_typeof
  22:     0x7ffb621804b1 - _CxxFrameHandler3
  23:     0x7ffb74ed448f - _chkstk
  24:     0x7ffb74e4fd54 - RtlUnwindEx
  25:     0x7ffb62180046 - _C_specific_handler
  26:     0x7ffb62173245 - is_exception_typeof
  27:     0x7ffb62173666 - is_exception_typeof
  28:     0x7ffb621746ec - is_exception_typeof
  29:     0x7ffb621804b1 - _CxxFrameHandler3
  30:     0x7ffb74ed440f - _chkstk
  31:     0x7ffb74e4e466 - RtlFindCharInUnicodeString
  32:     0x7ffb74e84465 - RtlRaiseException
  33:     0x7ffb727053ac - RaiseException
  34:     0x7ffb62176ba7 - CxxThrowException
  35:     0x7ff60b52c911 - panic_unwind::real_imp::panic
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\panic_unwind\src\seh.rs:313
  36:     0x7ff60b52c899 - panic_unwind::__rust_start_panic
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\panic_unwind\src\lib.rs:105
  37:     0x7ff60b52982b - std::panicking::rust_panic
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:672
  38:     0x7ff60b52972b - std::panicking::rust_panic_with_hook
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:642
  39:     0x7ff60b52912f - std::panicking::begin_panic_handler::closure$0
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:519
  40:     0x7ff60b527647 - std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure$0,never$>
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\sys_common\backtrace.rs:141
  41:     0x7ff60b5290b9 - std::panicking::begin_panic_handler
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:517
  42:     0x7ff60b539ac0 - core::panicking::panic_fmt
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\core\src\panicking.rs:101
  43:     0x7ff60b5210a0 - cad97_playground::main
                               at D:\git\cad97\playground\src\main.rs:10
  44:     0x7ff60b5212bb - core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\library\core\src\ops\function.rs:227
  45:     0x7ff60b52101b - std::sys_common::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<> >
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\library\std\src\sys_common\backtrace.rs:125
  46:     0x7ff60b521151 - std::rt::lang_start::closure$0<tuple$<> >
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\library\std\src\rt.rs:63
  47:     0x7ff60b5299c6 - core::ops::function::impls::impl$2::call_once
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\library\core\src\ops\function.rs:259
  48:     0x7ff60b5299c6 - std::panicking::try::do_call
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:403
  49:     0x7ff60b5299c6 - std::panicking::try
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:367
  50:     0x7ff60b5299c6 - std::panic::catch_unwind
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panic.rs:129
  51:     0x7ff60b5299c6 - std::rt::lang_start_internal::closure$2
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\rt.rs:45
  52:     0x7ff60b5299c6 - std::panicking::try::do_call
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:403
  53:     0x7ff60b5299c6 - std::panicking::try
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panicking.rs:367
  54:     0x7ff60b5299c6 - std::panic::catch_unwind
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\panic.rs:129
  55:     0x7ff60b5299c6 - std::rt::lang_start_internal
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\/library\std\src\rt.rs:45
  56:     0x7ff60b52111f - std::rt::lang_start<tuple$<> >
                               at /rustc/59eed8a2aac0230a8b53e89d4e99d55912ba6b35\library\std\src\rt.rs:62
  57:     0x7ff60b5210e6 - main
  58:     0x7ff60b538874 - invoke_main
                               at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  59:     0x7ff60b538874 - __scrt_common_main_seh
                               at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  60:     0x7ffb746e257d - BaseThreadInitThunk
  61:     0x7ffb74e8aa48 - RtlUserThreadStart
thread panicked while panicking. aborting.

rustc 1.79.0-nightly (8df7e723e 2024-03-30) output (no abort message)

thread 'main' panicked at src\main.rs:10:5:
panic in main
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:646
   1: core::panicking::panic_fmt
             at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\core\src\panicking.rs:72
   2: cad97_playground::main
             at .\src\main.rs:10
   3: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
             at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373\library\core\src\ops\function.rs:250
   4: core::hint::black_box
             at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373\library\core\src\hint.rs:338
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'main' panicked at src\main.rs:4:9:
panic in drop
stack backtrace:
   0:     0x7ff79eca63ea - std::backtrace_rs::backtrace::dbghelp64::trace
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\..\..\backtrace\src\backtrace\dbghelp64.rs:99
   1:     0x7ff79eca63ea - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ff79eca63ea - std::sys_common::backtrace::_print_fmt
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\sys_common\backtrace.rs:68
   3:     0x7ff79eca63ea - std::sys_common::backtrace::_print::impl$0::fmt
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\sys_common\backtrace.rs:44
   4:     0x7ff79ecb36d9 - core::fmt::rt::Argument::fmt
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\core\src\fmt\rt.rs:142
   5:     0x7ff79ecb36d9 - core::fmt::write
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\core\src\fmt\mod.rs:1153
   6:     0x7ff79eca4a01 - std::io::Write::write_fmt<std::sys::pal::windows::stdio::Stderr>
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\io\mod.rs:1843
   7:     0x7ff79eca61d6 - std::sys_common::backtrace::print
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\sys_common\backtrace.rs:34
   8:     0x7ff79eca7cb8 - std::panicking::default_hook::closure$1
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:272
   9:     0x7ff79eca7957 - std::panicking::default_hook
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:292
  10:     0x7ff79eca81fd - std::panicking::rust_panic_with_hook
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:789
  11:     0x7ff79eca807b - std::panicking::begin_panic_handler::closure$0
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:650
  12:     0x7ff79eca6a7f - std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\sys_common\backtrace.rs:171
  13:     0x7ff79eca7d68 - std::panicking::begin_panic_handler
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:646
  14:     0x7ff79ecb86a7 - core::panicking::panic_fmt
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\core\src\panicking.rs:72
  15:     0x7ff79eca1246 - cad97_playground::impl$0::drop
                               at D:\git\cad97\playground\src\main.rs:4
  16:     0x7ff79eca11ee - core::ptr::drop_in_place<cad97_playground::DropPanic>
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373\library\core\src\ptr\mod.rs:514
  17:     0x7ff79eca1107 - cad97_playground::main
                               at D:\git\cad97\playground\src\main.rs:11
  18:     0x7ffb62171060 - <unknown>
  19:     0x7ffb621753ea - is_exception_typeof
  20:     0x7ffb6217fb80 - _C_specific_handler
  21:     0x7ffb621745f0 - is_exception_typeof
  22:     0x7ffb621804b1 - _CxxFrameHandler3
  23:     0x7ffb74ed448f - _chkstk
  24:     0x7ffb74e4fd54 - RtlUnwindEx
  25:     0x7ffb62180046 - _C_specific_handler
  26:     0x7ffb62173245 - is_exception_typeof
  27:     0x7ffb62173666 - is_exception_typeof
  28:     0x7ffb621746ec - is_exception_typeof
  29:     0x7ffb621804b1 - _CxxFrameHandler3
  30:     0x7ffb74ed440f - _chkstk
  31:     0x7ffb74e4e466 - RtlFindCharInUnicodeString
  32:     0x7ffb74e84465 - RtlRaiseException
  33:     0x7ffb727053ac - RaiseException
  34:     0x7ffb62176ba7 - CxxThrowException
  35:     0x7ff79ecab650 - panic_unwind::real_imp::panic
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\panic_unwind\src\seh.rs:323
  36:     0x7ff79ecab650 - panic_unwind::__rust_start_panic
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\panic_unwind\src\lib.rs:106
  37:     0x7ff79eca8585 - std::panicking::rust_panic
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:841
  38:     0x7ff79eca8286 - std::panicking::rust_panic_with_hook
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:811
  39:     0x7ff79eca807b - std::panicking::begin_panic_handler::closure$0
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:650
  40:     0x7ff79eca6a7f - std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\sys_common\backtrace.rs:171
  41:     0x7ff79eca7d68 - std::panicking::begin_panic_handler
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\panicking.rs:646
  42:     0x7ff79ecb86a7 - core::panicking::panic_fmt
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\core\src\panicking.rs:72
  43:     0x7ff79eca10ea - cad97_playground::main
                               at D:\git\cad97\playground\src\main.rs:10
  44:     0x7ff79eca117b - core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373\library\core\src\ops\function.rs:250
  45:     0x7ff79eca113e - core::hint::black_box
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373\library\core\src\hint.rs:338
  46:     0x7ff79eca113e - std::sys_common::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<> >
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373\library\std\src\sys_common\backtrace.rs:155
  47:     0x7ff79eca12c1 - std::rt::lang_start::closure$0<tuple$<> >
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373\library\std\src\rt.rs:166
  48:     0x7ff79eca31d2 - std::rt::lang_start_internal
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373/library\std\src\rt.rs:148
  49:     0x7ff79eca129a - std::rt::lang_start<tuple$<> >
                               at /rustc/8df7e723ea729a7f917501cc2d91d640b7021373\library\std\src\rt.rs:165
  50:     0x7ff79eca1129 - main
  51:     0x7ff79ecb6e10 - invoke_main
                               at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  52:     0x7ff79ecb6e10 - __scrt_common_main_seh
                               at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  53:     0x7ffb746e257d - BaseThreadInitThunk
  54:     0x7ffb74e8aa48 - RtlUserThreadStart

full call stack when abort is called, as reported by vscode debugger

abort (@abort:21)
terminate (@terminate:12)
__FrameUnwindFilter (@__FrameUnwindFilter:20)
memset (@memset:346)
__C_specific_handler (@__C_specific_handler:46)
__chkstk (@__chkstk:121)
RtlFindCharInUnicodeString (@RtlFindCharInUnicodeString:714)
KiUserExceptionDispatcher (@KiUserExceptionDispatcher:15)
RaiseException (@RaiseException:26)
_CxxThrowException (@_CxxThrowException:42)
void panic_unwind::__rust_start_panic() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\panic_unwind\src\lib.rs:106)
void std::panicking::rust_panic() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:841)
void std::panicking::rust_panic_with_hook() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:811)
static void std::panicking::begin_panic_handler::closure$0() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:650)
static void std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\sys_common\backtrace.rs:171)
void std::panicking::begin_panic_handler() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:646)
void core::panicking::panic_fmt() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\panicking.rs:72)
140001246 (d:\git\cad97\playground\src\main.rs:4)
core::ptr::drop_in_place<cad97_playground::DropPanic> (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\ptr\mod.rs:514)
static void cad97_playground::main() (d:\git\cad97\playground\src\main.rs:11)
180001060 (@7ffb62171060..7ffb621710d1:3)
_is_exception_typeof (@_is_exception_typeof:2790)
__C_specific_handler (@__C_specific_handler:377)
_is_exception_typeof (@_is_exception_typeof:1837)
__CxxFrameHandler3 (@__CxxFrameHandler3:33)
__chkstk (@__chkstk:163)
RtlUnwindEx (@RtlUnwindEx:152)
__C_specific_handler (@__C_specific_handler:724)
_is_exception_typeof (@_is_exception_typeof:517)
_is_exception_typeof (@_is_exception_typeof:791)
_is_exception_typeof (@_is_exception_typeof:1899)
__CxxFrameHandler3 (@__CxxFrameHandler3:33)
__chkstk (@__chkstk:121)
RtlFindCharInUnicodeString (@RtlFindCharInUnicodeString:714)
KiUserExceptionDispatcher (@KiUserExceptionDispatcher:15)
RaiseException (@RaiseException:26)
_CxxThrowException (@_CxxThrowException:42)
void panic_unwind::__rust_start_panic() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\panic_unwind\src\lib.rs:106)
void std::panicking::rust_panic() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:841)
void std::panicking::rust_panic_with_hook() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:811)
static void std::panicking::begin_panic_handler::closure$0() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:650)
static void std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\sys_common\backtrace.rs:171)
void std::panicking::begin_panic_handler() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:646)
void core::panicking::panic_fmt() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\panicking.rs:72)
static void cad97_playground::main() (d:\git\cad97\playground\src\main.rs:10)
void core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >( *) (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\ops\function.rs:250)
void std::sys_common::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<> >( *) (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\sys_common\backtrace.rs:155)
int std::rt::lang_start::closure$0<tuple$<> >(struct std::rt::lang_start::closure_env$0<tuple$<> > *) (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:166)
void std::rt::lang_start_internal() (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:148)
__int64 std::rt::lang_start<tuple$<> >( *, __int64, unsigned char * *, unsigned char) (d:\.rust\rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:165)
main (@main:9)
static int __scrt_common_main_seh() (@7ff79ecb6e10..7ff79ecb6e77:3)
BaseThreadInitThunk (@BaseThreadInitThunk:12)
RtlUserThreadStart (@RtlUserThreadStart:12)

@rustbot modify labels: +regression-from-stable-to-stable +O-windows

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the provided double-panic example with the MSVC toolchain and compare its output with the older rustc output shown in the issue. Start by tracing the panic paths referenced in library/std/src/panicking.rs and library/panic_unwind/src/seh.rs; done means the abort message is printed and the behavior matches the expected Windows failure handling.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.