【问题标题】:Xcode - Compile Swift Segmentation Fault 11Xcode - 编译 Swift 分段错误 11
【发布时间】: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


【解决方案1】:

找到导致我的问题的原因:

我在项目中有“Math.h”自定义文件和类,导入和使用它会导致问题。

最奇怪的是,该文件在过去 18 天内一直在项目中,但一切正常。我想,这取决于我如何使用它,在 Objective-C 项目中使用它不会导致任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2015-09-13
    相关资源
    最近更新 更多