We discovered a problem recently where we would miscompile when imported ObjC 
lightweight generic classes are extended to conform to Swift protocols. This is 
being tracked by Apple as rdar://problem/28873860 <rdar://problem/28873860>, 
for reference, and should be release noted in upcoming Xcode seeds. If you 
happen to be extending any ObjC generic classes to conform to Swift protocols, 
there are a couple of workarounds that may work:

- making the protocol @objc, if possible, or
- wrapping the ObjC class reference in a generic struct, and making that struct 
conform to the protocol instead of the class.

Does that help at all?

-Joe

> On Oct 21, 2016, at 9:44 AM, Evan Maloney via swift-users 
> <swift-users@swift.org> wrote:
> 
> This is definitely not my first time hitting Swift compiler crashes :)
> 
> In the past, the stack traces have been helpful, pointing to what code the 
> compiler was working on when it crashed. Unfortunately, this latest crash 
> doesn't fall into that category:
> 
> CompileSwift normal x86_64 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Sources/iOS/FormBuilder/Row.swift
>     cd /Users/emaloney/Documents/Code/CleanroomProject/AppleTart
>     
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
>  -frontend -c -filelist 
> /var/folders/gn/gt76_ktx7w1010xg4v68p3txynz8ws/T/sources-a27d97 -primary-file 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Sources/iOS/FormBuilder/Row.swift
>  -target x86_64-apple-ios9.0 -enable-objc-interop -sdk 
> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.0.sdk
>  -I 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Products/Debug-iphonesimulator
>  -F 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Products/Debug-iphonesimulator
>  -F 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Carthage/Checkouts/AppleApiDocClients/build/Debug
>  -F 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Carthage/Checkouts/AppleTapstreamClient/build/Debug
>  -F 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Carthage/Checkouts/PromiseKit/build/Debug
>  -enable-testing -g -import-objc-header 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/BuildControl/Bridging-Header.h
>  -module-cache-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/ModuleCache -D DEBUG 
> -serialize-debugging-options -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/swift-overrides.hmap
>  -Xcc -iquote -Xcc 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/AppleTart-generated-files.hmap
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/AppleTart-own-target-headers.hmap
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/AppleTart-all-non-framework-target-headers.hmap
>  -Xcc -ivfsoverlay -Xcc 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/all-product-headers.yaml
>  -Xcc -iquote -Xcc 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/AppleTart-project-headers.hmap
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Products/Debug-iphonesimulator/include
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Products/Debug-iphonesimulator/CardIO.framework/Headers
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/DerivedSources/x86_64
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/DerivedSources
>  -Xcc -DDEBUG=1 -Xcc 
> -working-directory/Users/emaloney/Documents/Code/CleanroomProject/AppleTart 
> -emit-module-doc-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row~partial.swiftdoc
>  -Onone -module-name AppleTart -emit-module-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row~partial.swiftmodule
>  -serialize-diagnostics-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row.dia
>  -emit-dependencies-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row.d
>  -emit-reference-dependencies-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row.swiftdeps
>  -o 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row.o
> 
> 0  swift                    0x000000010e668b6d 
> PrintStackTraceSignalHandler(void*) + 45
> 1  swift                    0x000000010e6685b6 SignalHandler(int) + 470
> 2  libsystem_platform.dylib 0x00007fff94a7b52a _sigtramp + 26
> 3  libsystem_platform.dylib 0x0000000000000004 _sigtramp + 1800948468
> 4  swift                    0x000000010baa58d2 llvm::Value* 
> llvm::function_ref<llvm::Value* (unsigned 
> int)>::callback_fn<swift::irgen::emitArchetypeWitnessTableRef(swift::irgen::IRGenFunction&,
>  swift::CanTypeWrapper<swift::ArchetypeType>, 
> swift::ProtocolDecl*)::$_0>(long, unsigned int) + 530
> 5  swift                    0x000000010bb83600 
> swift::irgen::emitImpliedWitnessTableRef(swift::irgen::IRGenFunction&, 
> llvm::ArrayRef<swift::irgen::ProtocolEntry>, swift::ProtocolDecl*, 
> llvm::function_ref<llvm::Value* (unsigned int)> const&) + 240
> 6  swift                    0x000000010baa56a7 
> swift::irgen::emitArchetypeWitnessTableRef(swift::irgen::IRGenFunction&, 
> swift::CanTypeWrapper<swift::ArchetypeType>, swift::ProtocolDecl*) + 247
> 7  swift                    0x000000010bb7f9cd 
> swift::SILWitnessVisitor<(anonymous 
> namespace)::WitnessTableBuilder>::visitProtocolDecl(swift::ProtocolDecl*) + 
> 5997
> 8  swift                    0x000000010bb7d4d7 
> swift::irgen::IRGenModule::emitSILWitnessTable(swift::SILWitnessTable*) + 503
> 9  swift                    0x000000010baef8ed 
> swift::irgen::IRGenerator::emitGlobalTopLevel() + 2077
> 10 swift                    0x000000010bbb0fcb 
> performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, 
> swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, 
> unsigned int) + 1259
> 11 swift                    0x000000010ba7f1c7 
> performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, 
> llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*) + 23687
> 12 swift                    0x000000010ba77265 
> swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, 
> swift::FrontendObserver*) + 17029
> 13 swift                    0x000000010ba3482d main + 8685
> 14 libdyld.dylib            0x00007fff8ab5c5ad start + 1
> Stack dump:
> 0.    Program arguments: 
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
>  -frontend -c -filelist 
> /var/folders/gn/gt76_ktx7w1010xg4v68p3txynz8ws/T/sources-a27d97 -primary-file 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Sources/iOS/FormBuilder/Row.swift
>  -target x86_64-apple-ios9.0 -enable-objc-interop -sdk 
> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.0.sdk
>  -I 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Products/Debug-iphonesimulator
>  -F 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Products/Debug-iphonesimulator
>  -F 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Carthage/Checkouts/AppleApiDocClients/build/Debug
>  -F 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Carthage/Checkouts/AppleTapstreamClient/build/Debug
>  -F 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/Carthage/Checkouts/PromiseKit/build/Debug
>  -enable-testing -g -import-objc-header 
> /Users/emaloney/Documents/Code/CleanroomProject/AppleTart/BuildControl/Bridging-Header.h
>  -module-cache-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/ModuleCache -D DEBUG 
> -serialize-debugging-options -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/swift-overrides.hmap
>  -Xcc -iquote -Xcc 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/AppleTart-generated-files.hmap
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/AppleTart-own-target-headers.hmap
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/AppleTart-all-non-framework-target-headers.hmap
>  -Xcc -ivfsoverlay -Xcc 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/all-product-headers.yaml
>  -Xcc -iquote -Xcc 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/AppleTart-project-headers.hmap
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Products/Debug-iphonesimulator/include
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Products/Debug-iphonesimulator/CardIO.framework/Headers
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/DerivedSources/x86_64
>  -Xcc 
> -I/Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/DerivedSources
>  -Xcc -DDEBUG=1 -Xcc 
> -working-directory/Users/emaloney/Documents/Code/CleanroomProject/AppleTart 
> -emit-module-doc-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row~partial.swiftdoc
>  -Onone -module-name AppleTart -emit-module-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row~partial.swiftmodule
>  -serialize-diagnostics-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row.dia
>  -emit-dependencies-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row.d
>  -emit-reference-dependencies-path 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row.swiftdeps
>  -o 
> /Users/emaloney/Library/Developer/Xcode/DerivedData/AppleTart-gydtadecugkemlbxcybcwsxuynku/Build/Intermediates/AppleTart.build/Debug-iphonesimulator/AppleTart-iOS.build/Objects-normal/x86_64/Row.o
>  
> 
> 
> 
> 
>> On Oct 21, 2016, at 12:41 PM, Jon Shier <j...@jonshier.com 
>> <mailto:j...@jonshier.com>> wrote:
>> 
>> With Swift 3 I’ve found these crashes to be indicative of an underlying 
>> source issue rather than something random in the compiler. When you get the 
>> crash, can you get the backtrace in the Xcode build log? Sometimes that has 
>> clues about what it was doing when it crashed. A lot of the time when the 
>> crash is during the parsing or SIL generation for one of your functions, it 
>> will note it and you can take a look, as there may be a type mismatch. 
>> 
>> 
>> 
>> Jon
>> 
>>> On Oct 21, 2016, at 12:26 PM, Evan Maloney via swift-users 
>>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>>> 
>>> After a gargantuan effort updating our entire codebase to Swift 3.0, we are 
>>> now being greeted with "Segmentation fault: 11" compiler crash whenever 
>>> attempting to build.
>>> 
>>> The issue seems to be related to generics, and sounds similar to this issue:
>>> 
>>>     
>>> http://stackoverflow.com/questions/39426535/segmentation-fault-11-xcode-8-swift-3-after-using-notificationcenter/39426812
>>>  
>>> <http://stackoverflow.com/questions/39426535/segmentation-fault-11-xcode-8-swift-3-after-using-notificationcenter/39426812>
>>> 
>>> I've filed a bug report that includes our project codebase, which triggers 
>>> the issue 100% of the time:
>>> 
>>>     rdar://problem/28890409
>>> 
>>> The usual work-around of turning off Whole Module Optimization (which has 
>>> gotten around a lot of compiler crashes in the past) does not work here.
>>> 
>>> Unfortunately, this code is in such a tangle of generics that undoing it is 
>>> not going to be simple. Until a new version of Xcode ships, we're pretty 
>>> much blocked from using Swift 3.0 unless another work-around is possible.
>>> _______________________________________________
>>> swift-users mailing list
>>> swift-users@swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-users
>> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to