Skip to content

Stack corruption on AArch64 #106868

@bjorn3

Description

@bjorn3

I tried this code:

echo 'pub fn main() { std::fs::read_dir("foo").unwrap(); }' | rustc +nightly - -g -Cpanic=abort && RUST_BACKTRACE=1 ./rust_out

I expected to see this happen: Panics normally.

Instead, this happened: Backtrace lists thousands of duplicate unwrap calls and GDB reports a stack corruption.

Meta

rustc --version --verbose:

rustc 1.68.0-nightly (0b90256ad 2023-01-13)
binary: rustc
commit-hash: 0b90256ada21c6a81b4c18f2c7a23151ab5fc232
commit-date: 2023-01-13
host: aarch64-unknown-linux-gnu
release: 1.68.0-nightly
LLVM version: 15.0.6

but happened at least as early as nightly-2022-12-13. Doesn't happen on x86_64 or without -Cpanic=abort.

Backtrace

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', <anon>:1:42
stack backtrace:
   0: rust_begin_unwind
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/std/src/panicking.rs:575:5
   1: core::panicking::panic_fmt
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/panicking.rs:64:14
   2: core::result::unwrap_failed
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1790:5
   3: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
   4: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
   5: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
   6: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
   7: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
   8: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
   9: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  10: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  11: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  12: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  13: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  14: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  15: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  16: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  17: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  18: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  19: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  20: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  21: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  22: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  23: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  24: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  25: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  26: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  27: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  28: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  29: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  30: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  31: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  32: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  33: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  34: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  35: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  36: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  37: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  38: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  39: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  40: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  41: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  42: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  43: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  44: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  45: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  46: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  47: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  48: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  49: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  50: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  51: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  52: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  53: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  54: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  55: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  56: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  57: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  58: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  59: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  60: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  61: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  62: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  63: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  64: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  65: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  66: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  67: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  68: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  69: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  70: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  71: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  72: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  73: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  74: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  75: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  76: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  77: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  78: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  79: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  80: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  81: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  82: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  83: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  84: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  85: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  86: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  87: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  88: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  89: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  90: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
  91: core::result::Result<T,E>::unwrap
             at /rustc/0b90256ada21c6a81b4c18f2c7a23151ab5fc232/library/core/src/result.rs:1112:23
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Aborted (core dumped)

GDB shows

#0  __pthread_kill_implementation (threadid=281474842419232, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1  0x0000fffff7e5f254 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  0x0000fffff7e1a67c in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x0000fffff7e07130 in __GI_abort () at ./stdlib/abort.c:79
#4  0x0000aaaaaaac5624 in panic_abort::__rust_start_panic::abort () at library/panic_abort/src/lib.rs:42
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.E-needs-bisectionCall for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustcO-AArch64Armv8-A or later processors in AArch64 modeS-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions