Skip to content

Infinite loop in compiler #118163

Open
Open
@wbrickner

Description

@wbrickner

Minimal example code which causes infinite compile times:

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=13fec5b370c8046012770d2e2470c934

trait Bound { type Assoc; }

struct Recursive<'a, A: Bound> {
  value: A,
  rest: &'a Option<Recursive<'a, A::Assoc>>
}

I expected to see: the compiler finish executing.

Instead, this happened: the compiler hangs with modest CPU usage, seemingly indefinitely.

As an aside, the lack of a bound on the Assoc type should raise an error (otherwise the declaration is self-contradictory), but we never even get that far. So I have removed the bound in favor of making the example as minimal as possible. To be clear, the version with the correct bound hangs as well.

Meta

I have not done a thorough search over which versions hang.

The bug exists in stable: 1.73.0, 1.74.0, and possibly more versions of stable compiler.
The bug exists in beta 1.75.0-beta.3, and nightly 1.76.0-nightly, and possibly more versions of these compilers.

rustc --version --verbose:

rustc 1.73.0 (cc66ad468 2023-10-03)
binary: rustc
commit-hash: cc66ad468955717ab92600c770da8c1601a4ff33
commit-date: 2023-10-03
host: aarch64-apple-darwin
release: 1.73.0
LLVM version: 17.0.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-trait-systemArea: Trait systemC-bugCategory: This is a bug.I-hangIssue: The compiler never terminates, due to infinite loops, deadlock, livelock, etc.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