Skip to content

Command SwiftCompile failed with a nonzero exit code #84444

@jeremyabannister

Description

@jeremyabannister

Description

I've distilled the problematic setup as far as I could manage. I think it triggers an infinite recursion in the type checker.

Reproduction

protocol A {
    associatedtype B: A
    associatedtype C: D<Self>
}

protocol D<E> {
    associatedtype E: A
    func f(g: some G<E>) throws
}

protocol G<H> {
    associatedtype H: A
}

extension Optional: A where Wrapped: A {
    typealias B = Optional<Wrapped.B>
    struct C: D {
        typealias E = Optional<Wrapped>
        func f(g: some G<E>) throws {}
    }
}

Stack dump

1.	Apple Swift version 6.2 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
2.	Compiling with the current language version
3.	While evaluating request TypeCheckPrimaryFileRequest(source_file "/Users/jeremybannister/Documents/Code/Semantical/Firefly/Sources/Firefly/Model/File.swift")
4.	While type-checking extension of Optional (at /Users/jeremybannister/Documents/Code/Semantical/Firefly/Sources/Firefly/Model/File.swift:15:1)
5.	While type-checking 'C' (at /Users/jeremybannister/Documents/Code/Semantical/Firefly/Sources/Firefly/Model/File.swift:17:5)
6.	While type-checking protocol conformance Optional<Wrapped>.C: D at 'C' (at /Users/jeremybannister/Documents/Code/Semantical/Firefly/Sources/Firefly/Model/File.swift:17:5)
7.	While evaluating request ResolveValueWitnessesRequest(<Wrapped where Wrapped : A> Optional<Wrapped>.C: D module Firefly)
8.	While evaluating request AbstractGenericSignatureRequest(NULL, {τ_0_0, τ_1_0}, {τ_0_0 : A, Optional<τ_0_0>.C : D, τ_1_0 : G, Optional<Wrapped>.C.E == τ_1_0.H}, 0)
9.	While evaluating request AbstractGenericSignatureRequest(NULL, {τ_0_0, τ_1_0}, {τ_0_0 : A, Optional<τ_0_0>.C : D, τ_1_0 : G, Optional<τ_0_0> == τ_1_0.H}, 0)
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  swift-frontend           0x0000000107169bcc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  swift-frontend           0x000000010716755c llvm::sys::RunSignalHandlers() + 112
2  swift-frontend           0x000000010716a1f8 SignalHandler(int, __siginfo*, void*) + 344
3  libsystem_platform.dylib 0x000000018bf78704 _sigtramp + 56
4  libsystem_pthread.dylib  0x000000018bf6e848 pthread_kill + 296
5  libsystem_c.dylib        0x000000018be74808 abort + 124
6  swift-frontend           0x0000000102998124 swift::rewriting::RequirementMachine::checkCompletionResult(swift::rewriting::CompletionResult) const + 128
7  swift-frontend           0x000000010299da04 swift::AbstractGenericSignatureRequest::evaluate(swift::Evaluator&, swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) const + 3672
8  swift-frontend           0x0000000102396250 swift::SimpleRequest<swift::AbstractGenericSignatureRequest, llvm::PointerIntPair<swift::GenericSignature, 3u, swift::optionset::OptionSet<swift::GenericSignatureErrorFlags, unsigned int>, llvm::PointerLikeTypeTraits<swift::GenericSignature>, llvm::PointerIntPairInfo<swift::GenericSignature, 3u, llvm::PointerLikeTypeTraits<swift::GenericSignature>>> (swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool), (swift::RequestFlags)2>::evaluateRequest(swift::AbstractGenericSignatureRequest const&, swift::Evaluator&) + 288
9  swift-frontend           0x000000010289e368 swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultUncached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 504
10 swift-frontend           0x000000010289e09c swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultCached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'(), (void*)0>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 536
11 swift-frontend           0x000000010299d2c4 swift::AbstractGenericSignatureRequest::evaluate(swift::Evaluator&, swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) const + 1816
12 swift-frontend           0x0000000102396250 swift::SimpleRequest<swift::AbstractGenericSignatureRequest, llvm::PointerIntPair<swift::GenericSignature, 3u, swift::optionset::OptionSet<swift::GenericSignatureErrorFlags, unsigned int>, llvm::PointerLikeTypeTraits<swift::GenericSignature>, llvm::PointerIntPairInfo<swift::GenericSignature, 3u, llvm::PointerLikeTypeTraits<swift::GenericSignature>>> (swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool), (swift::RequestFlags)2>::evaluateRequest(swift::AbstractGenericSignatureRequest const&, swift::Evaluator&) + 288
13 swift-frontend           0x000000010289e368 swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultUncached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 504
14 swift-frontend           0x000000010289e09c swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultCached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'(), (void*)0>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 536
15 swift-frontend           0x000000010289c298 swift::buildGenericSignature(swift::ASTContext&, swift::GenericSignature, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) + 484
16 swift-frontend           0x000000010295f2a8 swift::RequirementEnvironment::RequirementEnvironment(swift::DeclContext*, swift::GenericSignature, swift::ProtocolDecl*, swift::ClassDecl*, swift::RootProtocolConformance*) + 2576
17 swift-frontend           0x000000010236a3c8 swift::matchWitness(llvm::DenseMap<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, swift::RequirementEnvironment, llvm::DenseMapInfo<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, void>, llvm::detail::DenseMapPair<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, swift::RequirementEnvironment>>&, swift::ProtocolDecl*, swift::RootProtocolConformance*, swift::DeclContext*, swift::ValueDecl*, swift::ValueDecl*) + 572
18 swift-frontend           0x000000010236b208 swift::WitnessChecker::findBestWitness(swift::ValueDecl*, bool*, swift::NormalProtocolConformance*, llvm::SmallVectorImpl<swift::RequirementMatch>&, unsigned int&, unsigned int&, bool&) + 392
19 swift-frontend           0x000000010236dd94 swift::ConformanceChecker::resolveWitnessViaLookup(swift::ValueDecl*) + 536
20 swift-frontend           0x000000010236fcc4 swift::ConformanceChecker::resolveValueWitnesses() + 1052
21 swift-frontend           0x000000010239892c swift::SimpleRequest<swift::ResolveValueWitnessesRequest, std::__1::tuple<> (swift::NormalProtocolConformance*), (swift::RequestFlags)2>::evaluateRequest(swift::ResolveValueWitnessesRequest const&, swift::Evaluator&) + 136
22 swift-frontend           0x0000000102954bec swift::ResolveValueWitnessesRequest::OutputType swift::Evaluator::getResultCached<swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType swift::evaluateOrDefault<swift::ResolveValueWitnessesRequest>(swift::Evaluator&, swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType)::'lambda'(), (void*)0>(swift::ResolveValueWitnessesRequest const&, swift::ResolveValueWitnessesRequest::OutputType swift::evaluateOrDefault<swift::ResolveValueWitnessesRequest>(swift::Evaluator&, swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType)::'lambda'()) + 1316
23 swift-frontend           0x000000010237bbb8 (anonymous namespace)::MultiConformanceChecker::checkAllConformances() + 18448
24 swift-frontend           0x0000000102374b88 swift::TypeChecker::checkConformancesInContext(swift::IterableDeclContext*) + 8396
25 swift-frontend           0x00000001022e59ec (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 2960
26 swift-frontend           0x00000001022ea29c (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 21568
27 swift-frontend           0x00000001023f6c3c swift::TypeCheckPrimaryFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const + 660
28 swift-frontend           0x00000001023fdc40 swift::TypeCheckPrimaryFileRequest::OutputType swift::Evaluator::getResultUncached<swift::TypeCheckPrimaryFileRequest, swift::TypeCheckPrimaryFileRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckPrimaryFileRequest>(swift::Evaluator&, swift::TypeCheckPrimaryFileRequest, swift::TypeCheckPrimaryFileRequest::OutputType)::'lambda'()>(swift::TypeCheckPrimaryFileRequest const&, swift::TypeCheckPrimaryFileRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckPrimaryFileRequest>(swift::Evaluator&, swift::TypeCheckPrimaryFileRequest, swift::TypeCheckPrimaryFileRequest::OutputType)::'lambda'()) + 672
29 swift-frontend           0x00000001011a61c8 bool llvm::function_ref<bool (swift::SourceFile&)>::callback_fn<swift::CompilerInstance::performSema()::$_0>(long, swift::SourceFile&) + 156
30 swift-frontend           0x000000010119f850 swift::CompilerInstance::forEachFileToTypeCheck(llvm::function_ref<bool (swift::SourceFile&)>) + 176
31 swift-frontend           0x000000010119f6e4 swift::CompilerInstance::performSema() + 120
32 swift-frontend           0x0000000100da669c performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 772
33 swift-frontend           0x0000000100da568c swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 3580
34 swift-frontend           0x0000000100d26c6c swift::mainEntry(int, char const**) + 5412
35 dyld                     0x000000018bbb1924 start + 6400

Expected behavior

Either a helpful error message, or even better, that it compiles (since I think ultimately it is coherent)

Environment

Swift 6.2
Xcode 26 Beta 7

Additional information

No response

Metadata

Metadata

Assignees

Labels

bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.crashBug: A crash, i.e., an abnormal termination of softwaregenericsFeature: generic declarations and types

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions