Skip to content
New issue

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

[SR-5420] Swift 4 compiler crashes on generic subscript #47994

Closed
swift-ci opened this issue Jul 10, 2017 · 3 comments
Closed

[SR-5420] Swift 4 compiler crashes on generic subscript #47994

swift-ci opened this issue Jul 10, 2017 · 3 comments
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software

Comments

@swift-ci
Copy link
Collaborator

Previous ID SR-5420
Radar rdar://problem/33219034
Original Reporter BenLeggiero (JIRA User)
Type Bug
Status Resolved
Resolution Done

Attachment: Download

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, CompilerCrash
Assignee None
Priority Medium

md5: b56c6b21dd55122361e1b8e8082e303c

Issue Description:

Trying to write a subscript that takes in a String key and returns a Set<Element>, where Element is a generic parameter on the subscript. The intention is to have the resulting value be implied by that which accepts the return value.

Crash reason is "Command failed due to signal: Segmentation fault: 11"


Stack trace:

0  swift                    0x000000010737731a PrintStackTraceSignalHandler(void*) + 42
1  swift                    0x0000000107376756 SignalHandler(int) + 662
2  libsystem_platform.dylib 0x00007fffc27b7b3a _sigtramp + 26
3  libsystem_platform.dylib 0x00007ff9ea4cde38 _sigtramp + 668033816
4  swift                    0x0000000103d830b2 swift::irgen::emitArchetypeWitnessTableRef(swift::irgen::IRGenFunction&, swift::CanTypeWrapper<swift::ArchetypeType>, swift::ProtocolDecl*) + 626
5  swift                    0x0000000103e81ce3 swift::irgen::emitWitnessTableRef(swift::irgen::IRGenFunction&, swift::CanType, llvm::Value**, swift::ProtocolConformanceRef) + 99
6  swift                    0x0000000103e82519 swift::irgen::emitGenericRequirementFromSubstitutions(swift::irgen::IRGenFunction&, swift::CanGenericSignature, swift::ModuleDecl&, swift::irgen::GenericRequirement, swift::SubstitutionMap const&) + 233
7  swift                    0x0000000103e823a1 void llvm::function_ref<void (swift::irgen::GenericRequirement)>::callback_fn<(anonymous namespace)::EmitPolymorphicArguments::emit(swift::CanTypeWrapper<swift::SILFunctionType>, swift::SubstitutionMap const&, swift::irgen::WitnessMetadata*, swift::irgen::Explosion&)::$_14>(long, swift::irgen::GenericRequirement) + 33
8  swift                    0x0000000103e80542 void llvm::function_ref<void (swift::irgen::GenericRequirement)>::callback_fn<(anonymous namespace)::PolymorphicConvention::enumerateUnfulfilledRequirements(llvm::function_ref<void (swift::irgen::GenericRequirement)> const&)::$_7>(long, swift::irgen::GenericRequirement) + 162
9  swift                    0x0000000103e773ed swift::irgen::enumerateGenericSignatureRequirements(swift::CanGenericSignature, llvm::function_ref<void (swift::irgen::GenericRequirement)> const&) + 269
10 swift                    0x0000000103e82194 swift::irgen::emitPolymorphicArguments(swift::irgen::IRGenFunction&, swift::CanTypeWrapper<swift::SILFunctionType>, swift::CanTypeWrapper<swift::SILFunctionType>, swift::SubstitutionMap const&, swift::irgen::WitnessMetadata*, swift::irgen::Explosion&) + 628
11 swift                    0x0000000103ef0daa (anonymous namespace)::IRGenSILFunction::visitFullApplySite(swift::FullApplySite) + 3082
12 swift                    0x0000000103ecff61 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 9233
13 swift                    0x0000000103ddfa2e swift::irgen::IRGenerator::emitGlobalTopLevel() + 1022
14 swift                    0x0000000103eb531f performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, llvm::GlobalVariable**, unsigned int) + 1711
15 swift                    0x0000000103d4476b performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 16603
16 swift                    0x0000000103d3ee24 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 7332
17 swift                    0x0000000103cf4ab8 main + 12248
18 libdyld.dylib            0x00007fffc25a8235 start + 1
Stack dump:
0.  Program arguments: /Applications/Xcode 9 Beta 2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file /path/to/Subscript Generification/Subscript Generification/main.swift -target x86_64-apple-macosx10.12 -enable-objc-interop -sdk /Applications/Xcode 9 Beta 2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -I /Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Products/Debug -F /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Products/Debug -enable-testing -g -module-cache-path /Users/username/Library/Developer/Xcode/DerivedData/ModuleCache -swift-version 4 -D DEBUG -serialize-debugging-options -Xcc -I/Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Subscript Generification-generated-files.hmap -Xcc -I/Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Subscript Generification-own-target-headers.hmap -Xcc -I/Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Subscript Generification-all-target-headers.hmap -Xcc -iquote -Xcc /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Subscript Generification-project-headers.hmap -Xcc -I/Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Products/Debug/include -Xcc -I/Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/DerivedSources/x86_64 -Xcc -I/Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/path/to/Subscript Generification -emit-module-doc-path /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Objects-normal/x86_64/main~partial.swiftdoc -serialize-diagnostics-path /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Objects-normal/x86_64/main.dia -Onone -module-name Subscript_Generification -emit-module-path /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Objects-normal/x86_64/main~partial.swiftmodule -emit-dependencies-path /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Objects-normal/x86_64/main.d -emit-reference-dependencies-path /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Objects-normal/x86_64/main.swiftdeps -o /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Build/Intermediates.noindex/Subscript Generification.build/Debug/Subscript Generification.build/Objects-normal/x86_64/main.o -index-store-path /Users/username/Library/Developer/Xcode/DerivedData/Subscript_Generification-fogiwzkcwktemfgwprhqeccqxmaj/Index/DataStore -index-system-modules 
1.  While emitting IR SIL function "@_T0So12UserDefaultsC24Subscript_GenerificationE9subscripts3SetVyxGSgSScs8HashableRzlufmytfU_".
 for materializeForSet for subscript(_:) at /path/to/Subscript Generification/Subscript Generification/main.swift:49:5
@huonw
Copy link
Mannequin

huonw mannequin commented Jul 11, 2017

Asserts build:

Assertion failed: (reqts.size() == conformances.size()), function operator(), file /Users/huon/swift6/swift/lib/AST/GenericSignature.cpp, line 395.
0  swift                    0x00000001070ae018 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40
1  swift                    0x00000001070acf76 llvm::sys::RunSignalHandlers() + 86
2  swift                    0x00000001070ae5de SignalHandler(int) + 366
3  libsystem_platform.dylib 0x00007fffd54a1b3a _sigtramp + 26
4  libsystem_platform.dylib 0x0000138d0200001f _sigtramp + 750118143
5  libsystem_c.dylib        0x00007fffd5326420 abort + 129
6  libsystem_c.dylib        0x00007fffd52ed893 basename_r + 0
7  swift                    0x000000010501aee2 bool llvm::function_ref<bool (swift::Type, llvm::ArrayRef<swift::Requirement>)>::callback_fn<swift::GenericSignature::getSubstitutionMap(llvm::ArrayRef<swift::Substitution>) const::$_6>(long, swift::Type, llvm::ArrayRef<swift::Requirement>) + 514
8  swift                    0x0000000105018256 swift::GenericSignature::enumeratePairedRequirements(llvm::function_ref<bool (swift::Type, llvm::ArrayRef<swift::Requirement>)>) const + 1110
9  swift                    0x000000010501967d swift::GenericSignature::getSubstitutionMap(llvm::ArrayRef<swift::Substitution>) const + 61
10 swift                    0x000000010508217a swift::GenericFunctionType::substGenericArgs(llvm::ArrayRef<swift::Substitution>) + 42
11 swift                    0x00000001046e0740 (anonymous namespace)::Callee::forDirect(swift::Lowering::SILGenFunction&, swift::SILDeclRef, llvm::ArrayRef<swift::Substitution>, swift::SILLocation) + 144
12 swift                    0x00000001046e5044 emitSpecializedAccessorFunctionRef(swift::Lowering::SILGenFunction&, swift::SILLocation, swift::SILDeclRef, llvm::ArrayRef<swift::Substitution>, swift::Lowering::ArgumentSource&, bool, bool) + 612
13 swift                    0x00000001046e4ace swift::Lowering::SILGenFunction::emitGetAccessor(swift::SILLocation, swift::SILDeclRef, llvm::ArrayRef<swift::Substitution>, swift::Lowering::ArgumentSource&&, bool, bool, swift::Lowering::RValue&&, swift::Lowering::SGFContext) + 158
14 swift                    0x0000000104759bfa (anonymous namespace)::GetterSetterComponent::get(swift::Lowering::SILGenFunction&, swift::SILLocation, swift::Lowering::ManagedValue, swift::Lowering::SGFContext) && + 298
15 swift                    0x0000000104757170 swift::Lowering::SILGenFunction::emitLoadOfLValue(swift::SILLocation, swift::Lowering::LValue&&, swift::Lowering::SGFContext, bool) + 448
16 swift                    0x000000010476185a (anonymous namespace)::MaterializeForSetEmitter::emit(swift::Lowering::SILGenFunction&) + 3034
17 swift                    0x0000000104762415 swift::Lowering::SILGenFunction::emitMaterializeForSet(swift::FuncDecl*) + 581
18 swift                    0x00000001046d821c swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*)::$_1::operator()(swift::SILFunction*) const + 188
19 swift                    0x00000001046cfd92 swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*) + 626
20 swift                    0x0000000104798590 swift::ASTVisitor<SILGenExtension, void, void, void, void, void, void>::visit(swift::Decl*) + 240
21 swift                    0x000000010479694b SILGenExtension::emitExtension(swift::ExtensionDecl*) + 59
22 swift                    0x0000000104796905 swift::Lowering::SILGenModule::visitExtensionDecl(swift::ExtensionDecl*) + 21
23 swift                    0x00000001046d4b8b swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*, unsigned int) + 843
24 swift                    0x00000001046d5af0 swift::SILModule::constructSIL(swift::ModuleDecl*, swift::SILOptions&, swift::FileUnit*, llvm::Optional<unsigned int>, bool) + 960
25 swift                    0x00000001046d6064 swift::performSILGeneration(swift::FileUnit&, swift::SILOptions&, llvm::Optional<unsigned int>) + 100
26 swift                    0x000000010409a335 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 7957
27 swift                    0x000000010409752a swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 3466
28 swift                    0x0000000104059a50 main + 3344
29 libdyld.dylib            0x00007fffd5292235 start + 1
30 libdyld.dylib            0x000000000000000e start + 718724570
Stack dump:
0.  Program arguments: ...
1.  While emitting SIL for materializeForSet for subscript(_:) at sr5420.swift:33:5
<unknown>:0: error: unable to execute command: Abort trap: 6
<unknown>:0: error: compile command failed due to signal 6 (use -v to see invocation)

Reduced (creduce + minor manual tweak):

struct UserDefaults {
  subscript<Element>()->Set<Element> {
    get {}
    set {}
  }
}

@slavapestov
Copy link
Member

#10910

@swift-ci
Copy link
Collaborator Author

Comment by Ky (JIRA)

Appears fixed as of Xcode 9 Beta 5

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
@AnthonyLatsis AnthonyLatsis added the crash Bug: A crash, i.e., an abnormal termination of software label Dec 12, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software
Projects
None yet
Development

No branches or pull requests

3 participants