分段错误:11(在项目 'X' 的目标 'X iOS' 中)[Xcode 11.4/11.4.1]

Segmentation fault: 11 (in target 'X iOS' from project 'X') [Xcode 11.4/11.4.1]

所以已经有很多人要求修复此问题,我已经尝试了所有建议的修复,例如启用可测试性或关闭编译优化。

Env:iOS 具有多个较小模块的应用程序,其中一个模块同时针对 iOS 和 watchOS。 watchOS 目标构建得很好,但 iOS 构建失败并出现段错误 11。它无法在 DEBUG 和 RELEASE 构建配置中编译。

workspace overview

  • main app iOS/watchOS/extensions/etc. imports X, Y, Z, pods
  • module X iOS/watchOS [Segfault11 when compiling iOS target]
  • module Y iOS imports X
  • module Z iOS imports X, Y
  • pods

堆栈转储:

1.  Apple Swift version 5.2.2 (swiftlang-1103.0.32.6 clang-1103.0.32.51)
2.  While generating SIL witness table protocol conformance to 'Hashable' (in module 'Swift') for type 'NSNotification.Name'
3.  While generating protocol witness thunk SIL function "@$sSo18NSNotificationNameaSHSCSH4hash4intoys6HasherVz_tFTW".
 for 'hash(into:)' (in module 'Foundation')
4.  While emitting SIL for 'hash(into:)' (in module 'Foundation')
5.  While silgen emitFunction SIL function "@$sSo18NSNotificationNamea4hash4intoys6HasherVz_tF".
 for 'hash(into:)' (in module 'Foundation')
0  swift                    0x0000000106f0b4ea PrintStackTraceSignalHandler(void*) + 42
1  swift                    0x0000000106f0acc0 SignalHandler(int) + 352
2  libsystem_platform.dylib 0x00007fff712955fd _sigtramp + 29
3  libsystem_platform.dylib 0x00007fe5cdd76a50 _sigtramp + 1554912368
4  swift                    0x0000000103158ebe swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 382
5  swift                    0x000000010310bb4f swift::Lowering::SILGenFunction::emitFunction(swift::FuncDecl*) + 799
6  swift                    0x0000000103071d29 swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*) + 953
7  swift                    0x0000000103070958 swift::Lowering::SILGenModule::getFunction(swift::SILDeclRef, swift::ForDefinition_t) + 1368
8  swift                    0x0000000103164b35 swift::Lowering::SILGenFunction::emitGlobalFunctionRef(swift::SILLocation, swift::SILDeclRef, swift::Lowering::SILConstantInfo, bool) + 485
9  swift                    0x0000000103153e5b swift::Lowering::SILGenFunction::emitProtocolWitness(swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::AnyFunctionType>, swift::SILDeclRef, swift::SubstitutionMap, swift::SILDeclRef, swift::SubstitutionMap, swift::Lowering::IsFreeFunctionWitness_t, bool) + 2507
10 swift                    0x0000000103167a8e swift::Lowering::SILGenModule::emitProtocolWitness(swift::ProtocolConformanceRef, swift::SILLinkage, swift::IsSerialized_t, swift::SILDeclRef, swift::SILDeclRef, swift::Lowering::IsFreeFunctionWitness_t, swift::Witness) + 2686
11 swift                    0x0000000103166f96 (anonymous namespace)::SILGenWitnessTable<(anonymous namespace)::SILGenConformance>::addMethod(swift::SILDeclRef) + 902
12 swift                    0x000000010316654d swift::SILWitnessVisitor<(anonymous namespace)::SILGenConformance>::visitProtocolDecl(swift::ProtocolDecl*) + 1805
13 swift                    0x0000000103165af6 swift::Lowering::SILGenModule::getWitnessTable(swift::NormalProtocolConformance*) + 550
14 swift                    0x000000010307d6c2 swift::SILModule::constructSIL(swift::ModuleDecl*, swift::Lowering::TypeConverter&, swift::SILOptions&, swift::FileUnit*) + 2242
15 swift                    0x0000000102c5ee9b swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 55595
16 swift                    0x0000000102bd4f53 main + 1283
17 libdyld.dylib            0x00007fff7109ccc9 start + 1
18 libdyld.dylib            0x00000000000000fe start + 2398499894
error: Segmentation fault: 11 (in target 'X iOS' from project 'X')

使用 Xcode 11.3.1

构建项目很好

尝试过这些线程的解决方案[没有帮助]:

我也在 3 月 26 日 (FB7640933) 向苹果提交了反馈,但没有得到回应...

所以我想我已经弄清楚是什么导致了这些麻烦。删除此代码导致正确构建模块。

extension Hashable where Self: RawRepresentable, Self.RawValue == String {
    public func hash(into hasher: inout Hasher) {
        hasher.combine(rawValue)
    }
}