Skip to content

TAIT crash: stack overflow in check_for_opaque_ty #104291

@jruderman

Description

@jruderman

Found by mutating src/test/ui/lint/lint-ctypes-73251-2.rs with a modified fuzz-rustc

Code

Compared to the original test, this modifies the definition of AliasB by removing <Assoc = AliasA>.

#![feature(type_alias_impl_trait)] pub trait TraitA { type Assoc; } impl TraitA for u32 { type Assoc = u32; } pub trait TraitB { type Assoc; } impl<T> TraitB for T where T: TraitA, { type Assoc = <T as TraitA>::Assoc; } type AliasA = impl TraitA<Assoc = u32>; type AliasB = impl TraitB; fn use_of_a() -> AliasA { 3 } fn use_of_b() -> AliasB { 3 } extern "C" { fn lint_me() -> <AliasB as TraitB>::Assoc; } fn main() {}

Regression

Regression in nightly-2020-06-22, presumably due to the same PR that added the mutated test: #73287 (@davidtwco)

Version

rustc 1.67.0-nightly (e75aab045 2022-11-09) binary: rustc commit-hash: e75aab045fc476f176a58c408f6b06f0e275c6e1 commit-date: 2022-11-09 host: x86_64-apple-darwin release: 1.67.0-nightly LLVM version: 15.0.4 

@rustbot label +I-crash +T-compiler +F-type_alias_impl_trait

Metadata

Metadata

Labels

C-bugCategory: This is a bug.F-type_alias_impl_trait`#[feature(type_alias_impl_trait)]`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