<!-- This repository tracks issues related to the implementation of the Swift compiler, standard library, runtime, and tools that provide IDE support for Swift (e.g. code completion). If the bug relates to the implementation of a proprietary (closed-source) Apple framework such as UIKit, SwiftUI, Combine, etc., please report it to https://feedbackassistant.apple.com instead. --> **Description** Compiler crashes if compile a following code: ``` protocol StorableKey { static var isInteger: Bool { get } } distributed actor TestActor<Object> where Object: Transferable & Identifiable, Object.ID: StorableKey { public typealias ActorSystem = DistributedSystem public init(in actorSystem: ActorSystem) { self.actorSystem = actorSystem } public distributed func handleObject(_ object: Object) async throws { print("\(object)") } } ``` **Steps to reproduce** <!-- Explain how to reproduce the problem (in steps if seen fit) and include either an inline test case (preferred) or a project that reproduces it. Consider reducing the sample to the smallest amount of code possible — a smaller test case is easier to reason about and more appealing to contributors. --> The source code which crash the compiler is in the GitHub repo, can be reproduced as: ``` git clone https://github.com/ordo-one/package-distributed-system.git cd package-distributed-system git checkout swift-compiler-crash swift test ``` Compilation fails with following error: ``` Building for debugging... error: compile command failed due to signal 6 (use -v to see invocation) Term verification failed Initial term: τ_0_0.[Identifiable:ID] Erased term: τ_0_0.ID Simplified term: τ_0_0.ID Requirement machine for <τ_0_0, τ_1_0 where τ_1_0 : DistributedTargetInvocationDecoder> Rewrite system: { - [DistributedTargetInvocationDecoder].[DistributedTargetInvocationDecoder] => [DistributedTargetInvocationDecoder] [permanent] - [DistributedTargetInvocationDecoder].SerializationRequirement => [DistributedTargetInvocationDecoder:SerializationRequirement] [permanent] - [DistributedTargetInvocationDecoder].[DistributedTargetInvocationDecoder:SerializationRequirement] => [DistributedTargetInvocationDecoder:SerializationRequirement] - τ_1_0.[DistributedTargetInvocationDecoder] => τ_1_0 [explicit] - τ_1_0.SerializationRequirement => τ_1_0.[DistributedTargetInvocationDecoder:SerializationRequirement] } } Property map: { [DistributedTargetInvocationDecoder] => { conforms_to: [DistributedTargetInvocationDecoder] } τ_1_0 => { conforms_to: [DistributedTargetInvocationDecoder] } } Conformance paths: { } Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace. Stack dump: 0. Program arguments: /home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend -frontend -c -primary-file /home/ubuntu/package-distributed-system/Tests/DistributedSystemTests/CompilerCrash.swift /home/ubuntu/package-distributed-system/Tests/DistributedSystemTests/DistributedSystemTests.swift /home/ubuntu/package-distributed-system/Tests/DistributedSystemTests/FrostflakeInitializer.swift /home/ubuntu/package-distributed-system/Tests/DistributedSystemTests/GenericDistributedActor.swift /home/ubuntu/package-distributed-system/Tests/DistributedSystemTests/TransferableConformanceTests.swift -emit-dependencies-path /home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/DistributedSystemTests.build/CompilerCrash.d -emit-reference-dependencies-path /home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/DistributedSystemTests.build/CompilerCrash.swiftdeps -target aarch64-unknown-linux-gnu -Xllvm -aarch64-use-tbi -disable-objc-interop -I /home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug -color-diagnostics -enable-testing -g -module-cache-path /home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/ModuleCache -swift-version 5 -Onone -D SWIFT_PACKAGE -D DEBUG -new-driver-path /home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-driver -empty-abi-descriptor -resource-dir /home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/lib/swift -enable-anonymous-context-mangled-names -Xcc -fmodule-map-file=/home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/CNIOLLHTTP.build/module.modulemap -Xcc -I -Xcc /home/ubuntu/package-distributed-system/.build/checkouts/swift-nio/Sources/CNIOLLHTTP/include -Xcc -fmodule-map-file=/home/ubuntu/package-distributed-system/.build/checkouts/swift-nio/Sources/CNIOWindows/include/module.modulemap -Xcc -I -Xcc /home/ubuntu/package-distributed-system/.build/checkouts/swift-nio/Sources/CNIOWindows/include -Xcc -fmodule-map-file=/home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/CNIOLinux.build/module.modulemap -Xcc -I -Xcc /home/ubuntu/package-distributed-system/.build/checkouts/swift-nio/Sources/CNIOLinux/include -Xcc -fmodule-map-file=/home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/CNIODarwin.build/module.modulemap -Xcc -I -Xcc /home/ubuntu/package-distributed-system/.build/checkouts/swift-nio/Sources/CNIODarwin/include -Xcc -fmodule-map-file=/home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -I -Xcc /home/ubuntu/package-distributed-system/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -Xcc -fmodule-map-file=/home/ubuntu/package-distributed-system/.build/checkouts/swift-atomics/Sources/_AtomicsShims/include/module.modulemap -Xcc -I -Xcc /home/ubuntu/package-distributed-system/.build/checkouts/swift-atomics/Sources/_AtomicsShims/include -Xcc -fmodule-map-file=/home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/_PauseShims.build/module.modulemap -Xcc -I -Xcc /home/ubuntu/package-distributed-system/.build/checkouts/package-concurrency-helpers/Sources/_PauseShims/include -Xcc -fPIC -module-name DistributedSystemTests -plugin-path /home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/lib/swift/host/plugins -plugin-path /home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/local/lib/swift/host/plugins -parse-as-library -o /home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/DistributedSystemTests.build/CompilerCrash.swift.o -index-store-path /home/ubuntu/package-distributed-system/.build/aarch64-unknown-linux-gnu/debug/index/store -index-system-modules 1. Swift version 5.9-dev (LLVM 3708b80be7731a7, Swift aaafc31485ff571) 2. Compiling with the current language version 3. While evaluating request IRGenRequest(IR Generation for file "/home/ubuntu/package-distributed-system/Tests/DistributedSystemTests/CompilerCrash.swift") 4. While emitting IR SIL function "@$s22DistributedSystemTests9TestActorC12handleObjectyyxYaKFTE". for 'handleObject(_:)' (in module 'DistributedSystemTests') #0 0x0000aaaae86d7038 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x6a87038) #1 0x0000aaaae86d5028 llvm::sys::RunSignalHandlers() (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x6a85028) #2 0x0000aaaae86d7454 SignalHandler(int) Signals.cpp:0:0 #3 0x0000ffff8b6a67dc (linux-vdso.so.1+0x7dc) #4 0x0000ffff89d9f200 __pthread_kill_implementation ./nptl/./nptl/pthread_kill.c:44:76 #5 0x0000ffff89d5a67c gsignal ./signal/../sysdeps/posix/raise.c:27:6 #6 0x0000ffff89d47130 abort ./stdlib/./stdlib/abort.c:81:7 #7 0x0000aaaae433e3bc swift::rewriting::RequirementMachine::getReducedShape(swift::Type, llvm::ArrayRef<swift::GenericTypeParamType*>) const (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x26ee3bc) #8 0x0000aaaae433e810 swift::rewriting::RequirementMachine::getRequiredProtocols(swift::Type) const (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x26ee810) #9 0x0000aaaae3002378 swift::irgen::FulfillmentMap::searchWitnessTable(swift::irgen::IRGenModule&, swift::CanType, swift::ProtocolDecl*, unsigned int, swift::irgen::MetadataPath&&, swift::irgen::FulfillmentMap::InterestingKeysCallback const&) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x13b2378) #10 0x0000aaaae3001d6c swift::irgen::FulfillmentMap::searchNominalTypeMetadata(swift::irgen::IRGenModule&, swift::CanType, swift::MetadataState, unsigned int, swift::irgen::MetadataPath&&, swift::irgen::FulfillmentMap::InterestingKeysCallback const&) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x13b1d6c) #11 0x0000aaaae2f6b390 void (anonymous namespace)::PolymorphicConvention::considerNewTypeSource<unsigned int>(swift::irgen::IsExact_t, swift::irgen::MetadataSource::Kind, swift::CanType, unsigned int) GenProto.cpp:0:0 #12 0x0000aaaae2f6a628 (anonymous namespace)::PolymorphicConvention::considerParameter(swift::SILParameterInfo, unsigned int, bool) GenProto.cpp:0:0 #13 0x0000aaaae2f5f464 (anonymous namespace)::PolymorphicConvention::PolymorphicConvention(swift::irgen::IRGenModule&, swift::CanTypeWrapper<swift::SILFunctionType>, bool) GenProto.cpp:0:0 #14 0x0000aaaae2f68890 swift::irgen::expandPolymorphicSignature(swift::irgen::IRGenModule&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::SmallVectorImpl<llvm::Type*>&, llvm::SmallVectorImpl<swift::irgen::PolymorphicSignatureExpandedTypeSource>*) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x1318890) #15 0x0000aaaae2e4dfa4 swift::irgen::(anonymous namespace)::SignatureExpansion::expandAsyncEntryType() GenCall.cpp:0:0 #16 0x0000aaaae2e4bea4 swift::irgen::(anonymous namespace)::SignatureExpansion::expandFunctionType(swift::irgen::SignatureExpansionABIDetails*) GenCall.cpp:0:0 #17 0x0000aaaae2e4bad8 swift::irgen::Signature::getUncached(swift::irgen::IRGenModule&, swift::CanTypeWrapper<swift::SILFunctionType>, swift::irgen::FunctionPointerKind, bool) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x11fbad8) #18 0x0000aaaae2efcd38 (anonymous namespace)::FuncSignatureInfo::getSignature(swift::irgen::IRGenModule&) const GenFunc.cpp:0:0 #19 0x0000aaaae2efc910 swift::irgen::IRGenModule::getSignature(swift::CanTypeWrapper<swift::SILFunctionType>) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x12ac910) #20 0x0000aaaae3012ce8 swift::irgen::IRGenModule::getAddrOfDistributedTargetAccessor(swift::SILFunction*, swift::ForDefinition_t) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x13c2ce8) #21 0x0000aaaae301382c swift::irgen::IRGenModule::emitDistributedTargetAccessor(swift::SILFunction*) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x13c382c) #22 0x0000aaaae2fce914 (anonymous namespace)::IRGenSILFunction::emitSILFunction() IRGenSIL.cpp:0:0 #23 0x0000aaaae2fcdf64 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x137df64) #24 0x0000aaaae2ea5174 swift::irgen::IRGenerator::emitGlobalTopLevel(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x1255174) #25 0x0000aaaae2d724b8 swift::IRGenRequest::evaluate(swift::Evaluator&, swift::IRGenDescriptor) const (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x11224b8) #26 0x0000aaaae2dc5a48 swift::GeneratedModule swift::SimpleRequest<swift::IRGenRequest, swift::GeneratedModule (swift::IRGenDescriptor), (swift::RequestFlags)9>::callDerived<0ul>(swift::Evaluator&, std::integer_sequence<unsigned long, 0ul>) const crtstuff.c:0:0 #27 0x0000aaaae2d814bc llvm::Expected<swift::IRGenRequest::OutputType> swift::Evaluator::getResultUncached<swift::IRGenRequest>(swift::IRGenRequest const&) crtstuff.c:0:0 #28 0x0000aaaae2d74a00 swift::performIRGeneration(swift::FileUnit*, swift::IRGenOptions const&, swift::TBDGenOptions const&, std::unique_ptr<swift::SILModule, std::default_delete<swift::SILModule> >, llvm::StringRef, swift::PrimarySpecificPaths const&, llvm::StringRef, llvm::GlobalVariable**) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0x1124a00) #29 0x0000aaaae2a33e44 generateIR(swift::IRGenOptions const&, swift::TBDGenOptions const&, std::unique_ptr<swift::SILModule, std::default_delete<swift::SILModule> >, swift::PrimarySpecificPaths const&, llvm::StringRef, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, llvm::GlobalVariable*&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >) FrontendTool.cpp:0:0 #30 0x0000aaaae2a30128 performCompileStepsPostSILGen(swift::CompilerInstance&, std::unique_ptr<swift::SILModule, std::default_delete<swift::SILModule> >, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, int&, swift::FrontendObserver*) FrontendTool.cpp:0:0 #31 0x0000aaaae2a2f1b8 swift::performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0xddf1b8) #32 0x0000aaaae2a41208 withSemanticAnalysis(swift::CompilerInstance&, swift::FrontendObserver*, llvm::function_ref<bool (swift::CompilerInstance&)>, bool) FrontendTool.cpp:0:0 #33 0x0000aaaae2a31b3c performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) FrontendTool.cpp:0:0 #34 0x0000aaaae2a30acc swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0xde0acc) #35 0x0000aaaae28a4874 swift::mainEntry(int, char const**) (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0xc54874) #36 0x0000ffff89d473fc __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3 #37 0x0000ffff89d474cc call_init ./csu/../csu/libc-start.c:128:20 #38 0x0000ffff89d474cc __libc_start_main ./csu/../csu/libc-start.c:379:5 #39 0x0000aaaae28a3570 _start (/home/ubuntu/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-09-13-a-ubuntu22.04-aarch64/usr/bin/swift-frontend+0xc53570) [584/595] Linking TestService error: fatalError ``` **Expected behavior** Tests compiles without errors. <!-- If deemed helpful, add screenshots that showcase the problem. --> <!-- **Screenshots** --> <!-- Include information about the Swift compiler version and, if applicable, the Xcode version you are observing the problem in and the deployment target. --> **Environment** - Swift version 5.9-dev (LLVM 3708b80be7731a7, Swift aaafc31485ff571) Target: aarch64-unknown-linux-gnu - Linux linux-dev 5.15.0-78-generic #85-Ubuntu SMP Fri Jul 7 15:29:30 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux <!-- Add any other context about the problem as appropriate. --> <!-- **Additional context** --> Seems it is a regression, works properly with latest 5.8