Skip to content

explicit tail calls: hang in const eval of recursive call #144753

@matthiaskrgr

Description

@matthiaskrgr

I tried this code:

#![expect(incomplete_features)]
#![feature(explicit_tail_calls)]

pub const fn f() {
    become g();
}

const fn g() {
    become g();
}

const _: () = f();

fn main() {}

It seems there is no output here until I ctrl+c this.
perf top shows some activity in _RNvMs_NtNtCs69nEItziXW1_16rustc_const_eval9interpret4callINtNtB6_12eval_context8InterpCxNtNtNtB8_10const_eval7machine18CompileTimeMachineE16init_stac

Meta

rustc --version --verbose:

rustc 1.90.0-nightly (adcb3d3b4 2025-07-31)
binary: rustc
commit-hash: adcb3d3b4cd3b7c4cde642f3ed537037f293738e
commit-date: 2025-07-31
host: x86_64-unknown-linux-gnu
release: 1.90.0-nightly
LLVM version: 20.1.8

Metadata

Metadata

Assignees

Labels

A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)C-bugCategory: This is a bug.F-explicit_tail_calls`#![feature(explicit_tail_calls)]`I-hangIssue: The compiler never terminates, due to infinite loops, deadlock, livelock, etc.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions