Skip to content

stack overflow while compiling async recursion #140725

Open
@ehaydenr

Description

@ehaydenr

Compiler encounters segfault when compiling the below code

Code

struct Wrapper<T>(T);

pub async fn f1() {
    f2(Wrapper(())).await
}

pub async fn f2<T>(stream: T) {
    Box::pin(f2(Wrapper(stream))).await
}

Meta

$ cargo version
cargo 1.86.0 (adf9b6ad1 2025-02-28)
$ cargo +nightly version
cargo 1.88.0-nightly (7918c7eb5 2025-04-27)

Error output

Stable

error: rustc interrupted by SIGSEGV, printing backtrace

/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x2fa1b74)[0xffffaf891b74]
linux-vdso.so.1(__kernel_rt_sigreturn+0x0)[0xffffb09f17ac]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(_RNvNtNtCs1eHWH1cD26q_17rustc_codegen_ssa9debuginfo10type_names14push_item_name+0x26c)[0xffffade124c8]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(_RNvNtNtCs1eHWH1cD26q_17rustc_codegen_ssa9debuginfo10type_names14push_item_name+0x164)[0xffffade123c0]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151d7f8)[0xffffade0d7f8]

### cycle encountered after 5 frames with period 6
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
### recursed 41 times

/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]
/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/librustc_driver-d10e1ea80d090031.so(+0x151cf78)[0xffffade0cf78]

note: rustc unexpectedly overflowed its stack! this is a bug
note: maximum backtrace depth reached, frames may have been lost
note: we would appreciate a report at https://github.com/rust-lang/rust
help: you can increase rustc's stack size by setting RUST_MIN_STACK=16777216
note: backtrace dumped due to SIGSEGV! resuming signal
error: could not compile `segfault` (lib)

Caused by:
  process didn't exit successfully: `/usr/local/rustup/toolchains/stable-aarch64-unknown-linux-gnu/bin/rustc --crate-name segfault --edition=2024 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=310 --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=d1c27d02b862a57e -C extra-filename=-f2d1ad9e2f73cb97 --out-dir /workspaces/rust/segfault/target/debug/deps -C incremental=/workspaces/rust/segfault/target/debug/incremental -L dependency=/workspaces/rust/segfault/target/debug/deps` (signal: 11, SIGSEGV: invalid memory reference)

Nightly

error: rustc interrupted by SIGSEGV, printing backtrace

/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x31b2310)[0xffffb5ef2310]
linux-vdso.so.1(__kernel_rt_sigreturn+0x0)[0xffffb714e7ac]
/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(_RNvNtNtCsiqNB9qq6D9S_17rustc_codegen_ssa9debuginfo10type_names14push_item_name+0x4)[0xffffb4543080]
/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x17fe368)[0xffffb453e368]

### cycle encountered after 4 frames with period 5
/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x17fd8f0)[0xffffb453d8f0]
/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x17fd8f0)[0xffffb453d8f0]
/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x17fd8f0)[0xffffb453d8f0]
/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x17fd8f0)[0xffffb453d8f0]
/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x17fd8f0)[0xffffb453d8f0]
### recursed 50 times

/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x17fd8f0)[0xffffb453d8f0]
/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/lib/librustc_driver-121983e25d0fab07.so(+0x17fd8f0)[0xffffb453d8f0]

note: rustc unexpectedly overflowed its stack! this is a bug
note: maximum backtrace depth reached, frames may have been lost
note: we would appreciate a report at https://github.com/rust-lang/rust
help: you can increase rustc's stack size by setting RUST_MIN_STACK=16777216
error: could not compile `segfault` (lib)

Caused by:
  process didn't exit successfully: `/usr/local/rustup/toolchains/nightly-aarch64-unknown-linux-gnu/bin/rustc --crate-name segfault --edition=2024 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=310 --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=6efcc8920530f666 -C extra-filename=-ca85f3463d939f74 --out-dir /workspaces/rust/segfault/target/debug/deps -C incremental=/workspaces/rust/segfault/target/debug/incremental -L dependency=/workspaces/rust/segfault/target/debug/deps` (signal: 11, SIGSEGV: invalid memory reference)

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-async-awaitArea: Async & AwaitC-bugCategory: This is a bug.I-compilememIssue: Problems and improvements with respect to memory usage during compilation.I-crashIssue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions