swiftlang / swift

The Swift Programming Language
https://swift.org
Apache License 2.0
67.5k stars 10.35k forks source link

[SR-13713] SIL verification failed: result of witness_method must have correct representation for protocol #56110

Closed dhoepfl closed 3 years ago

dhoepfl commented 4 years ago
Previous ID SR-13713
Radar rdar://problem/70140319
Original Reporter @dhoepfl
Type Bug
Status Resolved
Resolution Done
Environment swift --version: Swift version 5.3-dev (LLVM aba7154c8a2540f, Swift 15fc0fe2014f074) Target: x86_64-unknown-linux-gnu
Additional Detail from JIRA | | | |------------------|-----------------| |Votes | 0 | |Component/s | Compiler | |Labels | Bug | |Assignee | None | |Priority | Medium | md5: 99523bfbb38c6e13211064ae05284426

relates to:

Issue Description:

While investigating SR-13546 and SR-2301, swift build aborted with a crash.

I managed to reduce the change that leads to the crash to changing swift-corelibs-foundation/Sources/FoundationXML/XMLParser.swift:664 from

public protocol XMLParserDelegate: class {

to

@objc public protocol XMLParserDelegate: class {

I’m using the same build parameters in both cases.

The full log of the failed build is attached.

The stacktrace is:

PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend -frontend -c /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLDocument.swift /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLDTD.swift /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLDTDNode.swift /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLElement.swift /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLNode.swift -primary-file /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLParser.swift /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/CFAccess.swift -emit-module-path Sources/FoundationXML/CMakeFiles/FoundationXML.dir/XMLParser.swift.swiftmodule -emit-module-doc-path Sources/FoundationXML/CMakeFiles/FoundationXML.dir/XMLParser.swift.swiftdoc -emit-module-source-info-path Sources/FoundationXML/CMakeFiles/FoundationXML.dir/XMLParser.swift.swiftsourceinfo -emit-dependencies-path Sources/FoundationXML/CMakeFiles/FoundationXML.dir/XMLParser.swift.o.d -emit-reference-dependencies-path Sources/FoundationXML/CMakeFiles/FoundationXML.dir/XMLParser.swift.o.swiftdeps -target x86_64-unknown-linux-gnu -disable-objc-interop -I swift -I /home/myhome/llvm/swift-source/build/buildbot_linux/libdispatch-linux-x86_64/src/swift/swift -I /home/myhome/llvm/swift-source/build/buildbot_linux/libdispatch-linux-x86_64 -I /home/myhome/llvm/swift-source/swift-corelibs-libdispatch -I /home/myhome/llvm/swift-source/swift-corelibs-libdispatch/src -I /home/myhome/llvm/swift-source/build/buildbot_linux/libdispatch-linux-x86_64/src -I /home/myhome/llvm/swift-source/swift-corelibs-libdispatch/src/BlocksRuntime -module-link-name FoundationXML -O -D DEPLOYMENT_RUNTIME_SWIFT -D FoundationXML_EXPORTS -Xcc -F/home/myhome/llvm/swift-source/build/buildbot_linux/foundation-linux-x86_64 -parse-as-library -module-name FoundationXML -o Sources/FoundationXML/CMakeFiles/FoundationXML.dir/XMLParser.swift.o
1.      Swift version 5.3-dev (LLVM aba7154c8a2540f, Swift 15fc0fe2014f074)
2.      While evaluating request ASTLoweringRequest(Lowering AST to SIL for file "/home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLParser.swift")
3.      While silgen emitFunction SIL function "@$s13FoundationXML21_NSXMLParserGetEntity_4names13OpaquePointerVSgAE_SPys5UInt8VGtF".
 for '_NSXMLParserGetEntity(_:name:)' (at /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLParser.swift:148:10)
4.      While verifying SIL function "@$s13FoundationXML21_NSXMLParserGetEntity_4names13OpaquePointerVSgAE_SPys5UInt8VGtF".
 for '_NSXMLParserGetEntity(_:name:)' (at /home/myhome/llvm/swift-source/swift-corelibs-foundation/Sources/FoundationXML/XMLParser.swift:148:10)
 #​0 0x00000000054497e4 PrintStackTraceSignalHandler(void*) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x54497e4)
 #​1 0x00000000054473be llvm::sys::RunSignalHandlers() (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x54473be)
 #​2 0x00000000054499c5 SignalHandler(int) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x54499c5)
 #​3 0x00007fc1aa945730 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12730)
 #​4 0x00007fc1aa2227bb gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x377bb)
 #​5 0x00007fc1aa20d535 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22535)
 #​6 0x0000000001203ede (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x1203ede)
 #&#8203;7 0x0000000001216e24 swift::SILInstructionVisitor<(anonymous namespace)::SILVerifier, void>::visit(swift::SILInstruction*) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x1216e24)
 #&#8203;8 0x0000000001205c1e (anonymous namespace)::SILVerifier::visitSILBasicBlock(swift::SILBasicBlock*) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x1205c1e)
 #&#8203;9 0x00000000011ff2b6 swift::SILFunction::verify(bool) const (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x11ff2b6)
#&#8203;10 0x000000000097533e swift::Lowering::SILGenModule::postEmitFunction(swift::SILDeclRef, swift::SILFunction*) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x97533e)
#&#8203;11 0x0000000000972f92 swift::Lowering::SILGenModule::emitFunctionDefinition(swift::SILDeclRef, swift::SILFunction*) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x972f92)
#&#8203;12 0x0000000000976565 emitOrDelayFunction(swift::Lowering::SILGenModule&, swift::SILDeclRef, bool) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x976565)
#&#8203;13 0x0000000000972d7a swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x972d7a)
#&#8203;14 0x0000000000978e69 swift::ASTLoweringRequest::evaluate(swift::Evaluator&, swift::ASTLoweringDescriptor) const (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x978e69)
#&#8203;15 0x0000000000a31c13 swift::SimpleRequest<swift::ASTLoweringRequest, std::unique_ptr<swift::SILModule, std::default_delete<swift::SILModule> > (swift::ASTLoweringDescriptor), (swift::RequestFlags)9>::evaluateRequest(swift::ASTLoweringRequest const&, swift::Evaluator&) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0xa31c13)
#&#8203;16 0x000000000097dc81 llvm::Expected<swift::ASTLoweringRequest::OutputType> swift::Evaluator::getResultUncached<swift::ASTLoweringRequest>(swift::ASTLoweringRequest const&) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x97dc81)
#&#8203;17 0x000000000097a5c9 llvm::Expected<swift::ASTLoweringRequest::OutputType> swift::Evaluator::operator()<swift::ASTLoweringRequest, (void*)0>(swift::ASTLoweringRequest const&) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x97a5c9)
#&#8203;18 0x000000000097a6c0 swift::performASTLowering(swift::FileUnit&, swift::Lowering::TypeConverter&, swift::SILOptions const&) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x97a6c0)
#&#8203;19 0x0000000000511047 performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x511047)
#&#8203;20 0x00000000005089f2 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x5089f2)
#&#8203;21 0x000000000049b33c main (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x49b33c)
#&#8203;22 0x00007fc1aa20f09b __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409b)
#&#8203;23 0x000000000049aeea _start (/home/myhome/llvm/swift-source/build/buildbot_linux/swift-linux-x86_64/bin/swift-frontend+0x49aeea)
<unknown>:0: error: unable to execute command: Aborted
<unknown>:0: error: compile command failed due to signal 6 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Building the standard library for: swift-stdlib-linux-x86_64
Running Swift tests for: check-swift-linux-x86_64
typesanitizer commented 4 years ago

@swift-ci create

slavapestov commented 3 years ago

Oops, this was just a crash on invalid – we should be rejecting @objc on Linux: https://github.com/apple/swift/pull/34773