Skip to content

recursive opaque type results in stack overflow #139402

Closed
@matthiaskrgr

Description

@matthiaskrgr

original:

struct FileSystem;

impl FileSystem {
    fn build<'a>(
        &mut self,
        commands: impl Iterator<Item = &'a str> + 'a,
    ) -> Option<impl Iterator<Item = &'a str> + 'a> {
        let further_commands = self.build(commands);
        self.build(further_commands?)
    }
}

fn main() {}

Version information

rustc 1.88.0-nightly (1e008dd5d 2025-04-05)
binary: rustc
commit-hash: 1e008dd5d83e782ad37fc9cf6824733f824cc8cd
commit-date: 2025-04-05
host: x86_64-unknown-linux-gnu
release: 1.88.0-nightly
LLVM version: 20.1.2

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc

Program output

error: rustc interrupted by SIGSEGV, printing backtrace

/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x391f4bf) [0x75640411f4bf]
/usr/lib/libc.so.6(+0x3dcd0) [0x75640064bcd0]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x426cee4) [0x756404a6cee4]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x4260681) [0x756404a60681]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x426d087) [0x756404a6d087]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x4260681) [0x756404a60681]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x426d087) [0x756404a6d087]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6b1f2cb) [0x75640731f2cb]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x653cb8b) [0x756406d3cb8b]

### cycle encountered after 9 frames with period 10
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
### recursed 24 times

/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]
/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/librustc_driver-67dafa3979729d17.so(+0x6807409) [0x756407007409]

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
[1]    2393986 segmentation fault  rustc a.rs

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-crashIssue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.P-highHigh priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-nightlyPerformance or correctness regression from stable to nightly.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions