如何解决Swift编译器错误“错误:总线错误:10”?

时间:2019-04-03 23:09:21

标签: swift xcode xcodebuild

在Xcode 10.2和Swift 5的命令行中为带有xcodebuild的任何Apple平台构建 Apple Watch 的发行版时出现问题。

$ xcodebuild -scheme MyApp-watchOS -configuration Release -destination 'OS=latest,name=Apple Watch Series 2 - 38mm' build analyze

[...]

error: Bus error: 10

<unknown>:0: error: unable to execute command: Bus error: 10
<unknown>:0: error: compile command failed due to signal 10 (use -v to see invocation)

[...]

The following build commands failed:
    CompileSwift normal i386
    CompileSwiftSources normal i386 com.apple.xcode.tools.swift.compiler
(2 failures)

我尝试使用不同的模拟器,但是对于buildanalyze命令来说,错误仍然存​​在。

从Xcode进行的构建在Debug模型中工作正常,但在Release模式下失败。

CompileSwiftSources normal i386 com.apple.xcode.tools.swift.compiler (in target: MyApp-watchOS)
[...]
<unknown>:0: error: unable to execute command: Illegal instruction: 4
<unknown>:0: error: compile command failed due to signal 4 (use -v to see invocation)

CompileSwift normal i386 (in target: MyApp-watchOS)
[...]
error: Illegal instruction: 4

在这种情况下,清理DerivedData无效。

1 个答案:

答案 0 :(得分:0)

经过大量调试,注释掉代码并尝试了不同的项目设置之后,我发现导致问题的文件是我们用来比较磁盘上文件的MD5哈希:https://github.com/onmyway133/SwiftHash/blob/master/Sources/MD5.swift

从目标中删除该文件(和调用者)会使编译器满意,但这不是一个选择。

同时,我还发现将“ Optimization Level”设置为“ Optimize for Size”时,Swift 5编译器不会崩溃,因此我们现在将使用该选项。