Skip to content

stack overflow while compiling async recursion #140725

@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