在 Swift 3 中存档项目并获取"command failed due to signal segmentation fault 11"



我更新了Swift 3的代码,在设备上运行,一切正常,但是当我存档项目时,在清理和删除交付的数据后,我有错误"由于信号分割故障11命令失败"

我的日志

0 swift 0x000000010a5ffb6d PrintStackTraceSignalHandler(void*) + 45

1 swift 0x000000010a5ff5b6 SignalHandler(int) + 470

2 libsystem_platform。Dylib 0x00007fff9560152a _sigtramp + 26

3 libsystem_platform。Dylib 0x00007fff5825ab50 _sigtramp + 3267728960

4 swift 0x0000000107d29432 swift::CastOptimizer:: optimizeuconditionalcheckedcastaddrinst (swift::UnconditionalCheckedCastAddrInst*) + 1554

5 swift 0x0000000107db144d processFunction(swift::SILFunction&, bool, unsigned int) + 1901

6 swift 0x0000000107db7f9f(匿名命名空间)::ConstantPropagation::run() + 47

7 swift 0x0000000107d4862d swift::SILPassManager::runOneIteration() + 6077

8 swift 0x0000000107d4d7d6 swift::runSILOptimizationPasses(swift::SILModule&) + 3462

9 swift 0x0000000107a153cb performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef, int&, swift::FrontendObserver*) + 20107

10 swift 0x0000000107a0e265 swift::performFrontend(llvm::ArrayRef, char const*, void*, swift::FrontendObserver*) + 17029

11 swift 0x00000001079cb82d main + 8685

12 libdyld。Dylib 0x00007fff8936c5ad start + 1

13 libdyld。Dylib 0x000000000000006d start + 1992899265堆栈溢出:

  1. 运行pass #1059521 SILFunctionTransform "Constant Propagation" on SILFunction "@_TTSg5VSC29UIApplicationLaunchOptionsKeyS_s8Hashable5UIKit_P__CSo8NSObjectS2_S0_10ObjectiveC_Ps9AnyObject____TFs17_dictionaryUpCastu2_Rxs8Hashable0_S_rFGVs10Dictionaryxq__GS0_q0_q1__".

有人可以帮助或告诉,我应该在哪里搜索bug?

在我的情况下,我将launchOptions作为函数参数传递给另一个类

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool

迁移到Swift 3后,迁移者添加了cast来匹配等待参数的类型,该类型为[NSObject : AnyObject]? (Swift 3之前)

我所要做的就是更新我的自定义函数,以[UIApplicationLaunchOptionsKey: Any]为参数并删除错误的强制转换。就这么简单

我不需要妥协任何优化级别(这甚至不应该是开发人员的最后手段,这绝对不是解决编译器错误/分段错误的方法)。删除cast后,swift的整个模块优化工作正常

相关内容

最新更新