swiftlang / swift

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

[SR-6092] [Swift 4] Clang on Xcode 9.0 (9A235) crashes when typealiasing an associated type in a class extension #48647

Open swift-ci opened 6 years ago

swift-ci commented 6 years ago
Previous ID SR-6092
Radar None
Original Reporter djs-code (JIRA User)
Type Bug
Environment - Swift 4 - Clang on Xcode 9.0 (9A235) - macOS 10.12.6 (16G29) - iMac (27-inch, Late 2012)
Additional Detail from JIRA | | | |------------------|-----------------| |Votes | 0 | |Component/s | | |Labels | Bug | |Assignee | @slavapestov | |Priority | Medium | md5: 44e399c0a7591a5085f0bbaece4d65d2

Issue Description:

The following Swift 4 code is crashing on me:

protocol NoDependencies {}

protocol HasDependencies where Self: UIResponder {
    associatedtype Dependencies
    var dependencies: Dependencies? { get }
}

extension UIResponder: HasDependencies {
    typealias Dependencies = NoDependencies
    var dependencies: Dependencies? {
        return nil
    }
}
 0  swift                    0x000000010adc2dba PrintStackTraceSignalHandler(void*) + 42
1  swift                    0x000000010adc21f6 SignalHandler(int) + 662
2  libsystem_platform.dylib 0x00007fff953c4b3a _sigtramp + 26
3  libsystem_platform.dylib 000000000000000000 _sigtramp + 1791210720
4  swift                    0x0000000108073a7f (anonymous namespace)::SILGenConformance::visitAbstractStorageDecl(swift::AbstractStorageDecl*) + 31
5  swift                    0x00000001080731a6 swift::SILWitnessVisitor<(anonymous namespace)::SILGenConformance>::visitProtocolDecl(swift::ProtocolDecl*) + 726
6  swift                    0x0000000108071ed8 swift::Lowering::SILGenModule::getWitnessTable(swift::ProtocolConformance*) + 488
7  swift                    0x0000000108077580 swift::Lowering::SILGenModule::visitExtensionDecl(swift::ExtensionDecl*) + 608
8  swift                    0x0000000107f9af6b swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*, unsigned int) + 1115
9  swift                    0x0000000107f9c8f9 swift::SILModule::constructSIL(swift::ModuleDecl*, swift::SILOptions&, swift::FileUnit*, llvm::Optional<unsigned int>, bool) + 841
10 swift                    0x00000001077352c6 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 13014
11 swift                    0x0000000107730784 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 7716
12 swift                    0x00000001076e56a8 main + 12248
13 libdyld.dylib            0x00007fff951b5235 start + 1
Stack dump:
0.  Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c /Users/xelinis/Work/ResponderDITest/ResponderDITest/ViewController.swift -primary-file /Users/xelinis/Work/ResponderDITest/ResponderDITest/AppDelegate.swift -target x86_64-apple-ios11.0 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.0.sdk -I /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Products/Debug-iphonesimulator -F /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Products/Debug-iphonesimulator -enable-testing -g -module-cache-path /Users/xelinis/Library/Developer/Xcode/DerivedData/ModuleCache -swift-version 4 -enforce-exclusivity=checked -D DEBUG -serialize-debugging-options -Xcc -I/Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/ResponderDITest-generated-files.hmap -Xcc -I/Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/ResponderDITest-own-target-headers.hmap -Xcc -I/Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/ResponderDITest-all-target-headers.hmap -Xcc -iquote -Xcc /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/ResponderDITest-project-headers.hmap -Xcc -I/Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Products/Debug-iphonesimulator/include -Xcc -I/Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/DerivedSources/x86_64 -Xcc -I/Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/xelinis/Work/ResponderDITest -emit-module-doc-path /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/Objects-normal/x86_64/AppDelegate~partial.swiftdoc -serialize-diagnostics-path /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/Objects-normal/x86_64/AppDelegate.dia -Onone -module-name ResponderDITest -emit-module-path /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/Objects-normal/x86_64/AppDelegate~partial.swiftmodule -emit-dependencies-path /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/Objects-normal/x86_64/AppDelegate.d -emit-reference-dependencies-path /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/Objects-normal/x86_64/AppDelegate.swiftdeps -o /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Build/Intermediates.noindex/ResponderDITest.build/Debug-iphonesimulator/ResponderDITest.build/Objects-normal/x86_64/AppDelegate.o -index-store-path /Users/xelinis/Library/Developer/Xcode/DerivedData/ResponderDITest-acbvkyxndjvrpybldpleimavinyo/Index/DataStore -index-system-modules
swift-ci commented 6 years ago

Comment by Dan Stenmark (JIRA)

And yes, I now understand why what I'm trying to do here shouldn't work. At the same time, clang probably shouldn't segfault here either. šŸ™‚

slavapestov commented 4 years ago

No longer crashes in 5.1. On master it produces a bogus diagnostic unfortunately:

 ../build/Ninja-RelWithDebInfoAssert/swift-macosx-x86_64/bin/swiftc u.swift 
u.swift:6:20: error: circular reference
    associatedtype Dependencies
                   ^