Ответ 1
У меня была аналогичная проблема, и "решение" заключалось в том, чтобы быстро повысить уровень оптимизации генерации кода компилятора до -Onone
в настройках сборки для конфигурации выпуска. Это относится к Xcode 6.0.1.
У меня есть проект xcode и работает на устройстве, отладка сборки все в порядке.
Однако, когда я пытаюсь архивировать проект im, получая segfault от Swift Compiler:
0 swift 0x0000000105c36608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1 swift 0x0000000105c36af4 SignalHandler(int) + 452
2 libsystem_platform.dylib 0x00007fff852705aa _sigtramp + 26
3 libsystem_platform.dylib 0x0000000000000002 _sigtramp + 2061040242
4 swift 0x0000000105f51896 swift::TypeBase::getTypeOfMember(swift::Module*, swift::ValueDecl const*, swift::LazyResolver*, swift::Type) + 534
5 swift 0x00000001050eee38 swift::SILType::getFieldType(swift::VarDecl*, swift::SILModule&) const + 56
6 swift 0x00000001051a1252 (anonymous namespace)::SILSROA::run() + 3602
7 swift 0x000000010516b116 swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) + 310
8 swift 0x000000010516b6f9 swift::SILPassManager::runOneIteration() + 761
9 swift 0x000000010516b92b swift::SILPassManager::run() + 251
10 swift 0x000000010516afbc swift::runSILOptimizationPasses(swift::SILModule&, swift::SILOptions const&) + 1644
11 swift 0x0000000104ffb141 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 3537
12 swift 0x0000000104ffa35d main + 1533
13 libdyld.dylib 0x00007fff885d75fd start + 1
14 libdyld.dylib 0x0000000000000052 start + 2007140950
Я видел, как люди говорили о некоторой синте, которая может вызвать такую ошибку, но кто-нибудь знает, как попытаться отследить, какой бит кода вызывает segfault?
У меня была аналогичная проблема, и "решение" заключалось в том, чтобы быстро повысить уровень оптимизации генерации кода компилятора до -Onone
в настройках сборки для конфигурации выпуска. Это относится к Xcode 6.0.1.
до снижения уровня оптимизации (что определенно не способ решения проблем компиляции, если вы не используете какой-то довольно аккуратный материал низкого уровня или некоторые специальности).
Просто посмотрите, что компилятор пытается рассказать вам - yeap. это еще не читаемый человеком журнал. Но вы можете читать, не так ли?:)
У меня проблема такая:
While running pass #1059521 SILFunctionTransform "Constant Propagation" on SILFunction "@_TTSg5VSC29UIApplicationLaunchOptionsKeyS_s8Hashable5UIKit_P__CSo8NSObjectS2_S0_10ObjectiveC_Ps9AnyObject____TFs17_dictionaryUpCastu2_Rxs8Hashable0_S_rFGVs10Dictionaryxq__GS0_q0_q1__".
Если вы посмотрите внимательно на этот беспорядок, вы обнаружите, что вы делаете своего рода повышение, что не разрешено.
Что это значит? Посмотрите на свою функцию
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)
и найдите место, где вы выбрали launchOptions
как [NSObject : AnyObject]?
В swift 3 он изменился на [UIApplicationLaunchOptionsKey: Any]?
. Удалите это действие и обновите свой код, который ожидает launchOptions
как [NSObject : AnyObject]?
.
Если это поможет, просто включите оптимизацию оптимизатора всего стремительного целого модуля +, если вы не знаете, что такое оптимизация всего модуля → прочитайте эту статью:
У меня тоже была эта проблема, и я обнаружил, что некоторые конструкции в коде, похоже, вызывают сбой компилятора.
Одна из конструкций заключается в том, что вы слишком много используете [weak self]
следующим образом:
whatever { [weak self] in
whatever2 { [weak self] in
}
}
Второй [weak self]
не нужен и вызывает сбой компилятора.
В проекте, унаследованном от другой компании-разработчика, мы столкнулись с такой же ошибкой. Мы заметили, что были некоторые пользовательские настройки сборки, относящиеся к языковой версии Swift и диалоговому языку С++ (в разделе Apple LLVM). Вот что мы сделали, чтобы исправить:
pod update
и исправлены некоторые новые предупрежденияЗатем мы смогли создать и архивировать проект.
Кроме того, когда вы устанавливаете устройство на универсальное iOS-устройство, важно выполнить шаги в следующем порядке: