Xcode 11.4 - 项目归档 - 分段错误 11

22

我刚刚升级了Xcode到11.4,当我正在存档一个项目时,它显示“Segmentation Fault 11”。

这个项目可以使用Xcode 11.3.1存档,但现在不行了。

有其他人遇到同样的问题吗?

enter image description here

编辑:2020年4月15日

Apple刚刚发布了Xcode 11.4.1。


请查看此帖子:https://dev59.com/F5_ha4cB1Zd3GeqPsQuH#42168123 - Tom
4
谢谢你,Tom。但是那并不能解决问题。我很确定这是一个苹果的bug。 - Artur Marchetto
12个回答

15

我遇到了同样的问题。归档使用 Release 构建配置,所以我查看了每个编译器设置,以确定哪些差异导致这些段错误。

在我的情况下,当我将Release中的Enable Testability设置更改为YES时,问题就消失了。

我不知道在归档或发布版本中这样做的缺点,也不知道为什么特定的设置会缓解问题,但说到底,我的项目已经花了一年时间到达这个阶段,我非常想将其提交给内部测试人员,因此我准备通过测试飞行来尝试一下。

我认为这绝对是苹果的一个 bug,因为编译器根本不应该出现 Seg 错误。它能够在 Debug 配置下编译的事实支持了这一点。我的项目如此庞大,以至于我不知道如何复现此问题以提交 bug 报告,但我会在 Apple 论坛上看看是否能得到一些回应。


在Xcode 11.4.1中遇到了同样的问题,改变了这个设置后,它也对我起作用了。文档说这个标志与使私有接口可访问有关,所以可能有一些东西在那里...当启用此设置时,产品将使用适合运行自动化测试的选项进行构建,例如使私有接口对测试可访问。这可能会导致测试运行比不启用测试性能较慢。 - keegan3d
这对我没有用,项目无法为调试和发布构建。 Xcode 11.4.1也没有帮助,我仍然得到Segmentation fault 11错误。 - Witek Bobrowski
这对我没有用。我正在尝试在Xcode 11.5中调试项目。我还尝试禁用发布的Swift编译器优化,但对我无效。任何帮助将不胜感激。 - Shahabuddin Vansiwala
它对我起作用了,Xcode12中的错误在pods中。 - Cristi Băluță
我在Xcode 13.0中遇到了同样的问题,但上述技巧都没有起作用。我仍然不知道这个问题的原因。 - Vinayak

8

当我在构建设置中将SWIFT_COMPILATION_MODE设置为wholemodule时,它帮助我找到了问题。然后编译后得到了一个更具体的错误,这导致了引起错误的类函数。 后来又改回原来的设置。

也许对你也有帮助。

在我的情况下,对于init输入参数设置使用了三元运算符。 似乎Swift 5.2不再支持它了。

// Leads to error with Xcode 11.4
init(value: UIColor = Constants.staticBoolean ? .white : .green)

2
非常感谢!你让我的一天变得美好了! - nomnom
3
这也修复了我的编译时错误。默认参数中的三元运算符是罪魁祸首。希望苹果公司能尽快修复这个漏洞。 - Dao Xiang
2
我没有和 Swift 主分支 https://github.com/apple/swift/tree/master/ 复现这个问题。所以可能已经被修复了。 - Cœur

5

我的情况是Eureka pod出现了错误

Segmentation fault: 11 (in target 'Eureka' from project 'Pods')

在Pods文件中,我提供了最新版本:

pod 'Eureka', '~> 5.2.1'

同时将SWIFT_COMPILATION_MODE设置为wholemodule

2

和其他回答者一样,这里的错误信息中隐藏了一个SwiftUI问题(使用Xcode 11.4)。在我的情况下,使用.embedInScrollView()导致了构建错误。禁用这些调用可以修复它。作为解决方法,我将.embedInScrollView()放入了一个ViewModifier中,像这样:

public struct WrapInScrollView: ViewModifier {
    public func body(content: Content) -> some View {
        content
            .embedInScrollView()
    }

    public init() {}
}

然后我使用这个修改器,就像最初的调用一样,像这样:

.modifier(WrapInScrollView())

这意味着你仍然可以在scrollView中嵌入内容,但Seg 11错误将不再出现。

2

我有两个使用@Published修饰的同名变量。Xcode 11.4.1编译器无法检测到“两个相同变量”,而是返回了分段错误11。

@Published var isVirtualRacing = UserDefaults.isVirtualRacing {
  willSet {
  UserDefaults.isVirtualRacing = newValue
  }
}

@Published var isVirtualRacing = UserDefaults.isVirtualRacing {
willSet {
  UserDefaults.isVirtualRacing = newValue
  }
}

you should read all the errors


我遇到了完全相同的问题。 - FRIDDAY

1

我将#imageLiteral(resourceName: "image_name")修改为UIImage(imageLiteralResourceName: "image_name")


1

1

我在使用Eureka时遇到了错误。

唯一解决这个错误的方法是临时采用WilsonGramer的解决方案。

解决方法如下:

"我通过将RowType.swift中的[unowned self]替换为[weak self]并强制解包self来找到了一种解决方法。这可以防止编译器在Xcode 11.4中崩溃 - 如果您想查看,您可以使用我的分支:https://github.com/Wilsonator5000/Eureka/tree/fix/xcode11.4-unowned-self

如果这是一个合适的解决方案,请让项目维护者告诉我,我会打开一个拉取请求!" WilsonGramer

希望对你有所帮助。


1
这个解决方案非常简单。在Xcode菜单中,选择产品 -> 模式 -> 编辑模式... 在左侧菜单中选择构建。检查构建选项 - 查找隐式依赖关系应该打开。示例照片

0

不幸的是,启用可测试性 解决方案对我无效。

一个临时解决方法(在 Apple 修复 Xcode 11.4 Swift 编译器问题之前)是将 Release 的 优化级别 设置为 "无优化",针对失败的目标(SWIFT_OPTIMIZATION_LEVEL = "-Onone";)。它适用于我们的项目,该项目分为多个框架。只需要设置一个框架为 -Onone

但是Apple 文档要求不要使用此标志发布您的代码。它仅用于开发,执行最小的优化并保留所有调试信息。

我想我们必须等待 :'(


这对我没有用,且项目无法在调试和发布模式下构建。即使是 Xcode 11.4.1 也没有帮助,我仍然遇到了 Segmentation fault 11 的问题。 - Witek Bobrowski
这是一个由于错误的类型推断和泛型引起的问题。通过编译二分法的研究解决了这个问题! - jc_35

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接