Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Panic backtrace on Arm64 Windows is truncated #140489

Copy link
Copy link
@dpaoliello

Description

@dpaoliello
Issue body actions

When running the tests\ui\runtime\backtrace-debuginfo.rs test again aarch64-pc-windows-msvc, the test fails because the backtrace has been truncated:

thread 'main' panicked at C:\repos\rust\tests\ui\runtime\backtrace-debuginfo.rs:114:9:
explicit panic
stack backtrace:
   0:     0x7ff91fe0d544 - std::backtrace_rs::backtrace::win64::trace
                               at C:\repos\rust\library\backtrace\src\backtrace\win64.rs:85
   1:     0x7ff91fe0d544 - std::backtrace_rs::backtrace::trace_unsynchronized<std::sys::backtrace::_print_fmt::closure_env$1>
                               at C:\repos\rust\library\backtrace\src\backtrace\mod.rs:66
   2:     0x7ff91fde5510 - std::sys::backtrace::_print_fmt
                               at C:\repos\rust\library\std\src\sys\backtrace.rs:66
   3:     0x7ff91fde5510 - std::sys::backtrace::impl$0::print::impl$0::fmt
                               at C:\repos\rust\library\std\src\sys\backtrace.rs:39
   4:     0x7ff91fe2264c - core::fmt::write
                               at C:\repos\rust\library\core\src\fmt\mod.rs:1481
   5:     0x7ff91fddbeac - std::io::default_write_fmt<std::sys::stdio::windows::Stderr>
                               at C:\repos\rust\library\std\src\io\mod.rs:639
   6:     0x7ff91fdcf11c - std::io::Write::write_fmt<std::sys::stdio::windows::Stderr>
                               at C:\repos\rust\library\std\src\io\mod.rs:1914
   7:     0x7ff91fde540c - std::sys::backtrace::BacktraceLock::print
                               at C:\repos\rust\library\std\src\sys\backtrace.rs:42
   8:     0x7ff91fe04364 - std::panicking::default_hook::closure$0
                               at C:\repos\rust\library\std\src\panicking.rs:300
   9:     0x7ff91fe04184 - std::panicking::default_hook
                               at C:\repos\rust\library\std\src\panicking.rs:327
  10:     0x7ff91fe04b5c - std::panicking::rust_panic_with_hook
                               at C:\repos\rust\library\std\src\panicking.rs:833
  11:     0x7ff91fde5bf4 - std::panicking::begin_panic::closure$0<ref$<str$> >
                               at C:\repos\rust\library\std\src\panicking.rs:770

Digging into this further, the issue appears to be that the call to RtlVirtualUnwind stops after unwinding after std::panicking::begin_panic::closure$0<ref$<str$> > because the function reported by RtlLookupFunctionEntry is incorrect.

RtlLookupFunctionEntry seems to be getting confused as std::panicking::begin_panic::closure$0<ref$<str$> > is a non-returning function where its last instruction is to branch to another non-returning function. Thus, the return address reported from rust_panic_with_hook is actually after the end of std::panicking::begin_panic::closure$0<ref$<str$> >:

0:000> u 0x7ff91fde5bf0
std_b6e0767fb633a355!std::panicking::begin_panic::closure$0<ref$<str$> >+0x2c [C:\repos\rust\library\std\src\panicking.rs @ 770]:
00007ff9`1fde5bf0 94007ba1 bl          std_b6e0767fb633a355!std::panicking::rust_panic_with_hook (00007ff9`1fe04a74)
std_b6e0767fb633a355!std::sys::pal::windows::pipe::anon_pipe [C:\repos\rust\library\std\src\sys\pal\windows\pipe.rs @ 59]:
00007ff`91fde5bf0 d10583ff sub         sp,sp,#0x160

We might need to, somehow, get LLVM to add some padding for this case.

Metadata

Metadata

Assignees

Labels

A-backtraceArea: BacktracesArea: BacktracesA-panicArea: Panicking machineryArea: Panicking machineryA-runtimeArea: std's runtime and "pre-main" init for handling backtraces, unwinds, stack overflowsArea: std's runtime and "pre-main" init for handling backtraces, unwinds, stack overflowsC-bugCategory: This is a bug.Category: This is a bug.O-ArmTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 stateTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 stateO-windowsOperating system: WindowsOperating system: Windows

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.