We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
macOS 12.3 (21E230) Xcode 13.1 (Swift 5.5.1) and Xcode 13.3 (Swift 5.6)
md5: f4789aa728d1f31ce726adb48ed20cf4
Issue Description:
The compiler will crash with segmentation fault 11 if a target tries to make a key path for a property added by a protocol extension.
If the property is also part of the definition of the protocol it isn't an issue.
// Module A func useDependency() { _ = \DependencyProtocol.someValue } // Module B public protocol DependencyProtocol {} public extension DependencyProtocol { var someValue: Bool { false } }
A swift package reproducing the issue is available on GitHub. https://github.com/CraigSiemens/ProtocolKeypathSegFault
I tried attaching it but jira is giving an internal server error.
Building for debugging... Please submit a bug report ([https://swift.org/contributing/#reporting-bugs]) and include the project and the crash backtrace. Stack dump: 0. Program arguments: /Applications/Xcode-13-3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file "/Users/USERNAME/ProtocolKeypathSegFault/Sources/UsesDependency/UsesDependency.swift" -emit-dependencies-path "/Users/USERNAME/ProtocolKeypathSegFault/.build/arm64-apple-macosx/debug/UsesDependency.build/UsesDependency.d" -emit-reference-dependencies-path "/Users/USERNAME/ProtocolKeypathSegFault/.build/arm64-apple-macosx/debug/UsesDependency.build/UsesDependency.swiftdeps" -target arm64-apple-macosx10.10 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-13-3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -I "/Users/USERNAME/ProtocolKeypathSegFault/.build/arm64-apple-macosx/debug" -I /Applications/Xcode-13-3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /Applications/Xcode-13-3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -color-diagnostics -enable-testing -g -module-cache-path "/Users/USERNAME/ProtocolKeypathSegFault/.build/arm64-apple-macosx/debug/ModuleCache" -swift-version 5 -Onone -D SWIFT_PACKAGE -D DEBUG -new-driver-path /Applications/Xcode-13-3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-driver -resource-dir /Applications/Xcode-13-3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -module-name UsesDependency -target-sdk-version 12.3 -parse-as-library -o "/Users/USERNAME/ProtocolKeypathSegFault/.build/arm64-apple-macosx/debug/UsesDependency.build/UsesDependency.swift.o" -index-store-path "/Users/USERNAME/ProtocolKeypathSegFault/.build/arm64-apple-macosx/debug/index/store" -index-system-modules 1. Apple Swift version 5.6 (swiftlang-5.6.0.323.62 clang-1316.0.20.8) 2. Compiling with the current language version 3. While evaluating request IRGenRequest(IR Generation for file "/Users/USERNAME/ProtocolKeypathSegFault/Sources/UsesDependency/UsesDependency.swift") 4. While emitting IR SIL function "@$s14UsesDependency03useB0yyF". for 'useDependency()' (at /Users/USERNAME/ProtocolKeypathSegFault/Sources/UsesDependency/UsesDependency.swift:3:1) 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 0x00000001050eaf88 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56 1 swift-frontend 0x00000001050e9f9c llvm::sys::RunSignalHandlers() + 112 2 swift-frontend 0x00000001050eb618 SignalHandler(int) + 344 3 libsystem_platform.dylib 0x00000001a157d4c4 _sigtramp + 56 4 swift-frontend 0x00000001019e0e40 swift::Mangle::ASTMangler::appendAnyProtocolConformance(swift::GenericSignature, swift::CanType, swift::ProtocolConformanceRef) + 468 5 swift-frontend 0x00000001019e0e40 swift::Mangle::ASTMangler::appendAnyProtocolConformance(swift::GenericSignature, swift::CanType, swift::ProtocolConformanceRef) + 468 6 swift-frontend 0x0000000100e519dc swift::irgen::IRGenMangler::mangleSymbolNameForMangledConformanceAccessorString(char const*, swift::CanGenericSignature, swift::CanType, swift::ProtocolConformanceRef) + 232 7 swift-frontend 0x0000000100df23cc swift::irgen::IRGenModule::emitWitnessTableRefString(swift::CanType, swift::ProtocolConformanceRef, swift::GenericSignature, bool) + 420 8 swift-frontend 0x0000000100db31c8 void llvm::function_ref<void (swift::irgen::GenericRequirement)>::callback_fn<emitKeyPathComponent(swift::irgen::IRGenModule&, swift::irgen::ConstantStructBuilder&, swift::KeyPathPatternComponent const&, bool, swift::GenericEnvironment*, llvm::ArrayRef<swift::irgen::GenericRequirement>, swift::CanType, llvm::ArrayRef<KeyPathIndexOperand>, bool)::$_5>(long, swift::irgen::GenericRequirement) + 260 9 swift-frontend 0x0000000100de34d4 swift::irgen::enumerateGenericSignatureRequirements(swift::CanGenericSignature, llvm::function_ref<void (swift::irgen::GenericRequirement)> const&) + 380 10 swift-frontend 0x0000000100dadf04 emitKeyPathComponent(swift::irgen::IRGenModule&, swift::irgen::ConstantStructBuilder&, swift::KeyPathPatternComponent const&, bool, swift::GenericEnvironment*, llvm::ArrayRef<swift::irgen::GenericRequirement>, swift::CanType, llvm::ArrayRef<KeyPathIndexOperand>, bool) + 1200 11 swift-frontend 0x0000000100dad410 swift::irgen::IRGenModule::getAddrOfKeyPathPattern(swift::KeyPathPattern*, swift::SILLocation) + 2000 12 swift-frontend 0x0000000100e63eb4 swift::SILInstructionVisitor<(anonymous namespace)::IRGenSILFunction, void>::visit(swift::SILInstruction*) + 2356 13 swift-frontend 0x0000000100e5e698 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 8532 14 swift-frontend 0x0000000100d33010 swift::irgen::IRGenerator::emitGlobalTopLevel(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) + 1560 15 swift-frontend 0x0000000100e2f060 swift::IRGenRequest::evaluate(swift::Evaluator&, swift::IRGenDescriptor) const + 7140 16 swift-frontend 0x0000000100e5c278 swift::SimpleRequest<swift::IRGenRequest, swift::GeneratedModule (swift::IRGenDescriptor), (swift::RequestFlags)9>::evaluateRequest(swift::IRGenRequest const&, swift::Evaluator&) + 188 17 swift-frontend 0x0000000100e39c40 llvm::Expected<swift::IRGenRequest::OutputType> swift::Evaluator::getResultUncached<swift::IRGenRequest>(swift::IRGenRequest const&) + 736 18 swift-frontend 0x0000000100e33c30 swift::performIRGeneration(swift::FileUnit*, swift::IRGenOptions const&, swift::TBDGenOptions const&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::StringRef, swift::PrimarySpecificPaths const&, llvm::StringRef, llvm::GlobalVariable**) + 236 19 swift-frontend 0x000000010099916c performCompileStepsPostSILGen(swift::CompilerInstance&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, int&, swift::FrontendObserver*) + 2524 20 swift-frontend 0x000000010098c840 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 5344 21 swift-frontend 0x0000000100954130 swift::mainEntry(int, char const**) + 808 22 dyld 0x00000001077fd088 start + 516
The text was updated successfully, but these errors were encountered:
@CraigSiemens do you have a workaround for this issue?
Sorry, something went wrong.
@master-nevi We were able to move away from using a key path all together, which is probably specific to our use case.
No branches or pull requests
Environment
macOS 12.3 (21E230)
Xcode 13.1 (Swift 5.5.1) and Xcode 13.3 (Swift 5.6)
Additional Detail from JIRA
md5: f4789aa728d1f31ce726adb48ed20cf4
Issue Description:
The compiler will crash with segmentation fault 11 if a target tries to make a key path for a property added by a protocol extension.
If the property is also part of the definition of the protocol it isn't an issue.
A swift package reproducing the issue is available on GitHub.
https://github.com/CraigSiemens/ProtocolKeypathSegFault
I tried attaching it but jira is giving an internal server error.
The text was updated successfully, but these errors were encountered: