Swift compiler crashes emitting SIP for closure literal inside a generic class
| Originator: | tmandry | ||
| Number: | rdar://23383637 | Date Originated: | Nov 3, 2015 |
| Status: | Open | Resolved: | |
| Product: | Developer Tools | Product Version: | Xcode Version 7.2 beta (7C46l) |
| Classification: | Reproducible: | Always |
Summary:
I have a literal closure that I'm passing as a C function pointer to a C API. This is happening inside a the init method of a generic class. The compiler crashes while emitting SIP. It doesn't crash if the class is not generic.
Steps to Reproduce:
1. Install Xcode Version 7.2 beta (7C46l)
2. Create an OS X command-line project and paste the code in main.swift (14 lines)
3. Compile
Expected Results:
Successful compile
Actual Results:
Compiler crashes with errors attached in errors.txt
Version:
Xcode Version 7.2 beta (7C46l)
OS X 10.11.1
---
main.swift
---
import Cocoa
class Observer<ElementType> {
init() {
var axObserver: AXObserver?
let _ = AXObserverCreate(0, {(
axObserver: AXObserver,
axElement: AXUIElement,
notification: CFString,
userData: UnsafeMutablePointer<Void>) in
// do nothing
}, &axObserver)
}
}
---
errors.txt
---
CompileSwift normal x86_64 /Users/tyler/code/testcase2/testcase2/main.swift
cd /Users/tyler/code/testcase2
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file /Users/tyler/code/testcase2/testcase2/main.swift -target x86_64-apple-macosx10.11 -enable-objc-interop -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -I /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Products/Debug -F /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Products/Debug -enable-testing -g -module-cache-path /Users/tyler/Library/Developer/Xcode/DerivedData/ModuleCache -serialize-debugging-options -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/testcase2-generated-files.hmap -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/testcase2-own-target-headers.hmap -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/testcase2-all-target-headers.hmap -Xcc -iquote -Xcc /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/testcase2-project-headers.hmap -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Products/Debug/include -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/DerivedSources/x86_64 -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/tyler/code/testcase2 -emit-module-doc-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main~partial.swiftdoc -Onone -module-name testcase2 -emit-module-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main~partial.swiftmodule -serialize-diagnostics-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main.dia -emit-dependencies-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main.d -emit-reference-dependencies-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main.swiftdeps -o /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main.o
0 swift 0x0000000110db9f7b llvm::sys::PrintStackTrace(__sFILE*) + 43
1 swift 0x0000000110dba6bb SignalHandler(int) + 379
2 libsystem_platform.dylib 0x00007fff86b4052a _sigtramp + 26
3 libsystem_platform.dylib 0x0000001d00726573 _sigtramp + 2042519651
4 swift 0x000000010ef87b7b swift::irgen::emitPolymorphicArguments(swift::irgen::IRGenFunction&, swift::CanTypeWrapper<swift::SILFunctionType>, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::ArrayRef<swift::Substitution>, swift::irgen::WitnessMetadata*, swift::irgen::Explosion&) + 587
5 swift 0x000000010efd477c (anonymous namespace)::IRGenSILFunction::visitFullApplySite(swift::FullApplySite) + 2172
6 swift 0x000000010efc627d swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 10973
7 swift 0x000000010ef2c923 swift::irgen::IRGenModuleDispatcher::emitLazyDefinitions() + 307
8 swift 0x000000010efacd6a performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, unsigned int) + 1034
9 swift 0x000000010efad100 swift::performIRGeneration(swift::IRGenOptions&, swift::SourceFile&, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, unsigned int) + 64
10 swift 0x000000010eeabb35 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&) + 13701
11 swift 0x000000010eea83a3 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 2691
12 swift 0x000000010eea4a24 main + 2324
13 libdyld.dylib 0x00007fff927d95ad start + 1
14 libdyld.dylib 0x000000000000003a start + 1837263502
Stack dump:
0. Program arguments: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file /Users/tyler/code/testcase2/testcase2/main.swift -target x86_64-apple-macosx10.11 -enable-objc-interop -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -I /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Products/Debug -F /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Products/Debug -enable-testing -g -module-cache-path /Users/tyler/Library/Developer/Xcode/DerivedData/ModuleCache -serialize-debugging-options -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/testcase2-generated-files.hmap -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/testcase2-own-target-headers.hmap -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/testcase2-all-target-headers.hmap -Xcc -iquote -Xcc /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/testcase2-project-headers.hmap -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Products/Debug/include -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/DerivedSources/x86_64 -Xcc -I/Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/tyler/code/testcase2 -emit-module-doc-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main~partial.swiftdoc -Onone -module-name testcase2 -emit-module-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main~partial.swiftmodule -serialize-diagnostics-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main.dia -emit-dependencies-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main.d -emit-reference-dependencies-path /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main.swiftdeps -o /Users/tyler/Library/Developer/Xcode/DerivedData/testcase2-gujsabtuvlwakmakyxkeygwreirz/Build/Intermediates/testcase2.build/Debug/testcase2.build/Objects-normal/x86_64/main.o
1. While emitting IR SIL function @_TToFFC9testcase28ObservercurFMGS0_q__FT_GS0_q__U_FTCSo10AXObserverCSo11AXUIElementCSo8CFStringGVSs20UnsafeMutablePointerT___T_ for expression at [/Users/tyler/code/testcase2/testcase2/main.swift:6:33 - line:12:7] RangeText="{(
axObserver: AXObserver,
axElement: AXUIElement,
notification: CFString,
userData: UnsafeMutablePointer<Void>) in
// do nothing
}"
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!