分段错误: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)
}
}
所以已经有很多人要求修复此问题,我已经尝试了所有建议的修复,例如启用可测试性或关闭编译优化。
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)
}
}