【发布时间】:2016-09-02 09:20:22
【问题描述】:
项目配置: Xcode 7.3.1 最低 iOS 版本 7.1 iOS SDK 9.3 可可足类
在尝试编译混合 Objective-C/Swift 项目时 - 出现错误 Segmentation Fault 11,下一个构建日志:
Compile *.swift
Command failed due to signal: Segmentation Fault 11
详细来说,错误我可以看到很长的输出和一些有用的信息:
CompileSwift normal arm64 filePath/*.swift
0 swift 0x000000010b73266b llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 43
1 swift 0x000000010b731956 llvm::sys::RunSignalHandlers() + 70
2 swift 0x000000010b732ccf SignalHandler(int) + 287
3 libsystem_platform.dylib 0x00007fff8b49e52a _sigtramp + 26
4 libsystem_platform.dylib 0x00007fa8f989d5e0 _sigtramp + 1849684176
5 swift 0x000000010994d737 swift::ClangImporter::Implementation::addEntryToLookupTable(clang::Sema&, swift::SwiftLookupTable&, clang::NamedDecl*) + 151
6 swift 0x000000010994d802 swift::ClangImporter::Implementation::addEntryToLookupTable(clang::Sema&, swift::SwiftLookupTable&, clang::NamedDecl*) + 354
7 swift 0x000000010994e44c swift::ClangImporter::Implementation::importHeader(swift::ModuleDecl*, llvm::StringRef, swift::SourceLoc, bool, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >) + 1468
8 swift 0x000000010994ebc6 swift::ClangImporter::importBridgingHeader(llvm::StringRef, swift::ModuleDecl*, swift::SourceLoc, bool) + 502
9 swift 0x000000010993ef2d swift::CompilerInstance::performSema() + 605
10 swift 0x0000000109482596 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&) + 934
11 swift 0x000000010948168d frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 2781
12 swift 0x000000010947d0ac main + 1932
13 libdyld.dylib 0x00007fff887b05ad start + 1
14 libdyld.dylib 0x000000000000026b start + 2005204159
并且架构编译错误更改,如果我从设备切换到模拟器并向后切换,那么不应该是架构问题。
读取我可以看到的 Mac 控制台输出,同时在 SourceKit 服务中崩溃:
Thread 4 Crashed:: Dispatch queue: com.apple.root.default-qos
0 com.apple.SourceKitService.703.0.18.8 0x0000000106f1ca63 swift::ClangNode::getLocation() const + 19
1 com.apple.SourceKitService.703.0.18.8 0x0000000106c22a0f swift::ClangImporter::lookupBridgingHeaderDecls(llvm::function_ref<bool (swift::ClangNode)>, llvm::function_ref<void (swift::Decl*)>) const + 111
2 com.apple.SourceKitService.703.0.18.8 0x0000000106c22cb8 swift::ClangImporter::lookupDeclsFromHeader(llvm::StringRef, llvm::function_ref<bool (swift::ClangNode)>, llvm::function_ref<void (swift::Decl*)>) const + 216
3 com.apple.SourceKitService.703.0.18.8 0x00000001069a9034 swift::ide::printHeaderInterface(llvm::StringRef, swift::ASTContext&, swift::ASTPrinter&, swift::PrintOptions const&) + 852
4 com.apple.SourceKitService.703.0.18.8 0x00000001068bf368 SourceKit::SwiftInterfaceGenContext::create(llvm::StringRef, bool, llvm::StringRef, swift::CompilerInvocation, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) + 1992
5 com.apple.SourceKitService.703.0.18.8 0x00000001068c1de8 SourceKit::SwiftLangSupport::editorOpenHeaderInterface(SourceKit::EditorConsumer&, llvm::StringRef, llvm::StringRef, llvm::ArrayRef<char const*>) + 1704
6 com.apple.SourceKitService.703.0.18.8 0x00000001068d7895 handleRequestImpl(void*, std::__1::function<void (void*)>) + 6773
7 com.apple.SourceKitService.703.0.18.8 0x00000001068d5dc4 sourcekitd::handleRequest(void*, std::__1::function<void (void*)>) + 420
问题是完全随机发生的,项目一直运行良好,并且在某一时刻刚刚停止在模拟器上运行,但在设备上继续运行良好。在那之后,它无论如何都停止了运行。逐个提交返回,我可以看到,这个问题在过去几周内就存在,并且检查每一个更改是一项相当多的工作,并且没有给出任何结果。
显然这是一些 Xcode 问题,但是清理、删除派生数据、模块缓存、Xcode 设置、重新安装 Xcode、使用 beta 版和以前版本的 Xcode、删除 Source Kit 服务、禁用/启用模块支持、bitcode、增加/降低部署目标和任何其他建议,可以通过谷歌搜索 - 给出相同的结果。
阅读互联网 cmets - 问题应该在代码的某些部分,与 swift 相关,但完全注释或删除所有与 swift 相关的代码会产生另一个错误:
cyclic dependency in module 'darwin'
这样,Foundation 或 UIKit 等任何框架都无法编译,而且我遇到了数百个与未知类相关的错误。
创建新项目并在其中一一添加文件,也没有给出任何结果 - 添加所有文件并安装 cocoapods 后,项目已经运行了一段时间,但之后 - 同样的问题又开始了。
所以我没有办法,如何找到导致问题的代码的确切部分(这确实是 Xcode 错误,但几乎没有希望,它将在 Xcode 8 中修复,因为它仍然存在于测试版)。
很高兴听到有关此问题的任何帮助,因此我几天都无法入睡:)
【问题讨论】:
-
你有桥接头文件吗?
-
是的,但是评论其中的所有内容,或部分地,或完全删除它,都会给我留下同样的问题
-
问题是在你放obj c代码之后还是之前开始的? (所有 .h 必须在桥接文件中,不要评论任何内容)
-
主要问题是检测确切时刻,当这个问题开始时:项目对我来说总是很好,但是现在,当我回顾过去几周的提交时,它们仍然显示相同的错误,以同样的随机方式 - 有时工作正常,有时无法存档,或在设备上运行。
-
我看到一个答案,有人关闭了 xcode 打开了另一个项目然后没有关闭项目打开了有问题的项目,然后它工作了
标签: ios objective-c iphone swift xcode