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-10168] Linux Swift 5 Nested Generic Regression: Compiler Assertion Fails #52570

Open
stephencelis opened this issue Mar 25, 2019 · 2 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

@stephencelis
Copy link
Contributor

Previous ID SR-10168
Radar None
Original Reporter @stephencelis
Type Bug
Environment

Ubuntu 16.04, swift-5.0-DEVELOPMENT-SNAPSHOT-2019-03-10-a

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

md5: 9333aff32836cf99aae68f2b05dc071c

Issue Description:

See:

https://travis-ci.org/pointfreeco/swift-html/jobs/511209410

You can reproduce by cloning this commit:

pointfreeco/swift-html@3306c90

And running:

 make test-linux

Which produces this output:

swift: /home/buildnode/jenkins/workspace/oss-swift-5.0-package-linux-ubuntu-16_04/swift/lib/AST/ASTContext.cpp:4066: swift::SILFunctionType::SILFunctionType(swift::GenericSignature *, swift::SILFunctionType::ExtInfo, swift::SILCoroutineKind, swift::ParameterConvention, ArrayRef<swift::SILParameterInfo>, ArrayRef<swift::SILYieldInfo>, ArrayRef<swift::SILResultInfo>, Optional<swift::SILResultInfo>, const swift::ASTContext &, swift::RecursiveTypeProperties, Optional<swift::ProtocolConformanceRef>): Assertion `!genericSig->areAllParamsConcrete() && "If all generic parameters are concrete, SILFunctionType should " "not have a generic signature at all"' failed.
Stack dump:
0.  Program arguments: /usr/bin/swift -frontend -c -primary-file /package/Sources/Html/Aria.swift -primary-file /package/Sources/Html/Attributes.swift -primary-file /package/Sources/Html/ChildOf.swift -primary-file /package/Sources/Html/DebugRender.swift -primary-file /package/Sources/Html/Elements.swift -primary-file /package/Sources/Html/Events.swift -primary-file /package/Sources/Html/Html4.swift -primary-file /package/Sources/Html/MediaType.swift -primary-file /package/Sources/Html/Node.swift -primary-file /package/Sources/Html/Render.swift -primary-file /package/Sources/Html/Tag.swift -supplementary-output-file-map /tmp/supplementaryOutputs-722e30 -target x86_64-unknown-linux -disable-objc-interop -sdk / -I /package/.build/x86_64-unknown-linux/debug -enable-testing -g -module-cache-path /package/.build/x86_64-unknown-linux/debug/ModuleCache -swift-version 5 -Onone -D SWIFT_PACKAGE -D DEBUG -enable-anonymous-context-mangled-names -parse-as-library -module-name Html -o /package/.build/x86_64-unknown-linux/debug/Html.build/Aria.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/Attributes.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/ChildOf.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/DebugRender.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/Elements.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/Events.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/Html4.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/MediaType.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/Node.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/Render.swift.o -o /package/.build/x86_64-unknown-linux/debug/Html.build/Tag.swift.o -index-store-path /package/.build/x86_64-unknown-linux/debug/index/store -index-system-modules 
1.  While silgen emitConstructor SIL function "@$s4Html9AttributeVA2A3TagO4AreaORszlE5ShapeO8rawValueAIyAG_GSgSS_tcfC".
 for 'init(rawValue:)' (in module 'Html')
#&#8203;0 0x0000000004627044 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x4627044)
#&#8203;1 0x0000000004624e10 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x4624e10)
#&#8203;2 0x00000000046271f2 SignalHandler(int) (/usr/bin/swift+0x46271f2)
#&#8203;3 0x00007f136205a390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#&#8203;4 0x00007f1360799428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428)
#&#8203;5 0x00007f136079b02a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a)
#&#8203;6 0x00007f1360791bd7 (/lib/x86_64-linux-gnu/libc.so.6+0x2dbd7)
#&#8203;7 0x00007f1360791c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82)
#&#8203;8 0x00000000017f813d swift::SILFunctionType::SILFunctionType(swift::GenericSignature*, swift::SILFunctionType::ExtInfo, swift::SILCoroutineKind, swift::ParameterConvention, llvm::ArrayRef<swift::SILParameterInfo>, llvm::ArrayRef<swift::SILYieldInfo>, llvm::ArrayRef<swift::SILResultInfo>, llvm::Optional<swift::SILResultInfo>, swift::ASTContext const&, swift::RecursiveTypeProperties, llvm::Optional<swift::ProtocolConformanceRef>) (/usr/bin/swift+0x17f813d)
#&#8203;9 0x00000000017f8761 swift::SILFunctionType::get(swift::GenericSignature*, swift::SILFunctionType::ExtInfo, swift::SILCoroutineKind, swift::ParameterConvention, llvm::ArrayRef<swift::SILParameterInfo>, llvm::ArrayRef<swift::SILYieldInfo>, llvm::ArrayRef<swift::SILResultInfo>, llvm::Optional<swift::SILResultInfo>, swift::ASTContext const&, llvm::Optional<swift::ProtocolConformanceRef>) (/usr/bin/swift+0x17f8761)
#&#8203;10 0x000000000133f0dc getSILFunctionType(swift::SILModule&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::AnyFunctionType>, swift::AnyFunctionType::ExtInfo, (anonymous namespace)::Conventions const&, swift::ForeignInfo const&, llvm::Optional<swift::SILDeclRef>, llvm::Optional<swift::SILDeclRef>, llvm::Optional<swift::SubstitutionMap>, llvm::Optional<swift::ProtocolConformanceRef>) (/usr/bin/swift+0x133f0dc)
#&#8203;11 0x00000000013387a4 getNativeSILFunctionType(swift::SILModule&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::AnyFunctionType>, swift::AnyFunctionType::ExtInfo, llvm::Optional<swift::SILDeclRef>, llvm::Optional<swift::SILDeclRef>, llvm::Optional<swift::SubstitutionMap>, llvm::Optional<swift::ProtocolConformanceRef>) (/usr/bin/swift+0x13387a4)
#&#8203;12 0x000000000133998d getUncachedSILFunctionTypeForConstant(swift::SILModule&, swift::SILDeclRef, swift::CanTypeWrapper<swift::AnyFunctionType>) (/usr/bin/swift+0x133998d)
#&#8203;13 0x000000000133a805 swift::Lowering::TypeConverter::getConstantInfo(swift::SILDeclRef) (/usr/bin/swift+0x133a805)
#&#8203;14 0x0000000000f0fa23 swift::ASTVisitor<(anonymous namespace)::SILGenApply, void, void, void, void, void, void>::visit(swift::Expr*) (/usr/bin/swift+0xf0fa23)
#&#8203;15 0x0000000000f14fc3 (anonymous namespace)::SILGenApply::visitApplyExpr(swift::ApplyExpr*) (/usr/bin/swift+0xf14fc3)
#&#8203;16 0x0000000000ef9011 swift::Lowering::SILGenFunction::emitApplyExpr(swift::Expr*, swift::Lowering::SGFContext) (/usr/bin/swift+0xef9011)
#&#8203;17 0x0000000000e83851 swift::ASTVisitor<(anonymous namespace)::RValueEmitter, swift::Lowering::RValue, void, void, void, void, void, swift::Lowering::SGFContext>::visit(swift::Expr*, swift::Lowering::SGFContext) (/usr/bin/swift+0xe83851)
#&#8203;18 0x0000000000e75084 swift::Lowering::SILGenFunction::emitRValue(swift::Expr*, swift::Lowering::SGFContext) (/usr/bin/swift+0xe75084)
#&#8203;19 0x0000000000ee3999 swift::Lowering::ArgumentSource::getAsRValue(swift::Lowering::SILGenFunction&, swift::Lowering::SGFContext) && (/usr/bin/swift+0xee3999)
#&#8203;20 0x0000000000eaf835 swift::Lowering::SILGenFunction::emitAssignToLValue(swift::SILLocation, swift::Lowering::ArgumentSource&&, swift::Lowering::LValue&&) (/usr/bin/swift+0xeaf835)
#&#8203;21 0x0000000000e93c99 emitSimpleAssignment(swift::Lowering::SILGenFunction&, swift::SILLocation, swift::Expr*, swift::Expr*) (/usr/bin/swift+0xe93c99)
#&#8203;22 0x0000000000e85e05 swift::ASTVisitor<(anonymous namespace)::RValueEmitter, swift::Lowering::RValue, void, void, void, void, void, swift::Lowering::SGFContext>::visit(swift::Expr*, swift::Lowering::SGFContext) (/usr/bin/swift+0xe85e05)
#&#8203;23 0x0000000000e78905 swift::Lowering::SILGenFunction::emitIgnoredExpr(swift::Expr*) (/usr/bin/swift+0xe78905)
#&#8203;24 0x0000000000ed4785 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) (/usr/bin/swift+0xed4785)
#&#8203;25 0x0000000000ed453e swift::Lowering::SILGenFunction::emitStmt(swift::Stmt*) (/usr/bin/swift+0xed453e)
#&#8203;26 0x0000000000f30afd (anonymous namespace)::PatternMatchEmission::emitCaseBody(swift::CaseStmt*) (/usr/bin/swift+0xf30afd)
#&#8203;27 0x0000000000f225d6 swift::Lowering::SILGenFunction::emitSwitchStmt(swift::SwitchStmt*) (/usr/bin/swift+0xf225d6)
#&#8203;28 0x0000000000ed4679 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) (/usr/bin/swift+0xed4679)
#&#8203;29 0x0000000000ed453e swift::Lowering::SILGenFunction::emitStmt(swift::Stmt*) (/usr/bin/swift+0xed453e)
#&#8203;30 0x0000000000e5120e swift::Lowering::SILGenFunction::emitValueConstructor(swift::ConstructorDecl*) (/usr/bin/swift+0xe5120e)
#&#8203;31 0x0000000000e3be2d swift::Lowering::SILGenModule::emitConstructor(swift::ConstructorDecl*)::$_4::operator()(swift::SILFunction*) const (/usr/bin/swift+0xe3be2d)
#&#8203;32 0x0000000000e34024 swift::Lowering::SILGenModule::emitConstructor(swift::ConstructorDecl*) (/usr/bin/swift+0xe34024)
#&#8203;33 0x0000000000eded17 (anonymous namespace)::SILGenType::emitType() (/usr/bin/swift+0xeded17)
#&#8203;34 0x0000000000ee2735 swift::ASTVisitor<SILGenExtension, void, void, void, void, void, void>::visit(swift::Decl*) (/usr/bin/swift+0xee2735)
#&#8203;35 0x0000000000edf63b SILGenExtension::emitExtension(swift::ExtensionDecl*) (/usr/bin/swift+0xedf63b)
#&#8203;36 0x0000000000edf5fe swift::Lowering::SILGenModule::visitExtensionDecl(swift::ExtensionDecl*) (/usr/bin/swift+0xedf5fe)
#&#8203;37 0x0000000000e386dc swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*) (/usr/bin/swift+0xe386dc)
#&#8203;38 0x0000000000e395e7 swift::SILModule::constructSIL(swift::ModuleDecl*, swift::SILOptions&, swift::FileUnit*) (/usr/bin/swift+0xe395e7)
#&#8203;39 0x0000000000e39c6a swift::performSILGeneration(swift::FileUnit&, swift::SILOptions&) (/usr/bin/swift+0xe39c6a)
#&#8203;40 0x00000000004e981a performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) (/usr/bin/swift+0x4e981a)
#&#8203;41 0x00000000004e66b6 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/usr/bin/swift+0x4e66b6)
#&#8203;42 0x000000000048da2e main (/usr/bin/swift+0x48da2e)
#&#8203;43 0x00007f1360784830 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20830)
#&#8203;44 0x000000000048b869 _start (/usr/bin/swift+0x48b869)
<unknown>:0: error: unable to execute command: Aborted
<unknown>:0: error: compile command failed due to signal 6 (use -v to see invocation) 
@stephencelis
Copy link
Contributor Author

So to clarify: Attribute is a generic type that we re-open in constrained ways and nest some additional types inside. E.g.: https://github.com/pointfreeco/swift-html/blob/ac09f716dca4e941d340d712a39a519521042405/Sources/Html/Attributes.swift#L404-L409

This code compiles just fine on the Xcode 10.2 release.

@belkadan
Copy link
Contributor

@slavapestov is working on removing this assertion. (Which is why it compiles "just fine" in the Xcode release: assertions are turned off. But we think this particular assertion really is unnecessary.)

@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
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