Using Xcode 11.2.1 with a project that depends on a minimal static library built through SwiftPM, I've got a runtime crash when invoking a generic function when built under a release config with optimizations on (Debug builds are fine). This is a default xcodeproject, I haven't customized any build settings.
I've got a relatively minimal test case at GitHub - MichaelShaw/UITestMinimal: Xcode 11.2.1 swift compiler bug
On launch it crahes on swift_getWitnessTable producing:
#2 0x00000001c3fe8a74 in abort ()
#3 0x00000001d1c3d2a4 in swift_runtime_unreachable(char const*) ()
#4 0x00000001d1c3ee34 in swift_getWitnessTable ()
#5 0x00000001021b09b0 in lazy protocol witness table accessor for type Interaction<Int> and conformance Interaction<A> [inlined] ()
#6 0x00000001021b096c in specialized AppDelegate.application(_:didFinishLaunchingWithOptions:) at /Users/michael/workspace/UITestMinimal/UITester/AppDelegate.swift:17
#7 0x00000001021b030c in AppDelegate.application(_:didFinishLaunchingWithOptions:) [inlined] ()
I've reduced this from a more complex example.
Fumbling around with LLDB in my more complex example (that I can't easily share), I was hitting the unreachable at swift/Metadata.cpp at main · apple/swift · GitHub
It appeared that the mangledName
where it expects a symbolic reference in a StringRef
of size 5, preceding the crash it was only receiving a StringRef
of length 3, leading to hitting the unreachable block.