فشل تطبيق دائرة الرقابة الداخلية لأرشفة للتوزيع
سؤال
طلبي يبني ، يدير ، يحاكي الخ.الخ.بخير!كل شيء يعمل بنسبة 100 ٪ على كل من أجهزة المحاكاة والأجهزة المادية.لا توجد أخطاء أو تحذيرات أثناء البناء.
الآن ، عندما أحاول أرشفة مشروعي ، أحصل على الخطأ التالي:
0 clang 0x000000010bdb3472 _ZL15PrintStackTracePv + 34
1 clang 0x000000010bdb38f9 _ZL13SignalHandleri + 553
2 libsystem_c.dylib 0x00007fff8bd8ccfa _sigtramp + 26
3 libsystem_c.dylib 0x0000000000000001 _sigtramp + 18446603338169922337
4 clang 0x000000010bc7fbbf (anonymous namespace)::ObjCARCOpt::runOnFunction(llvm::Function&) + 7407
5 clang 0x000000010b0502b2 llvm::FPPassManager::runOnFunction(llvm::Function&) + 322
6 clang 0x000000010b052baf (anonymous namespace)::CGPassManager::runOnModule(llvm::Module&) + 1039
7 clang 0x000000010b050bc1 llvm::MPPassManager::runOnModule(llvm::Module&) + 289
8 clang 0x000000010b0505c5 llvm::PassManagerImpl::run(llvm::Module&) + 277
9 clang 0x000000010b0504ad llvm::PassManager::run(llvm::Module&) + 13
10 clang 0x000000010b02f0e8 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::Module*, clang::BackendAction, llvm::raw_ostream*) + 4424
11 clang 0x000000010b02c941 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 513
12 clang 0x000000010aef83f6 clang::ParseAST(clang::Sema&, bool) + 406
13 clang 0x000000010aef6ed7 clang::CodeGenAction::ExecuteAction() + 855
14 clang 0x000000010aec943f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 879
15 clang 0x000000010aec80cb clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 2683
16 clang 0x000000010aeba8ce cc1_main(char const**, char const**, char const*, void*) + 5086
17 clang 0x000000010ae950d8 main + 648
18 clang 0x000000010ae94e44 start + 52
clang: error: unable to execute command: Segmentation fault: 11
clang: error: clang frontend command failed due to signal 2 (use -v to see invocation)
clang: note: diagnostic msg: Please submit a bug report to http://developer.apple.com/bugreporter/ and include command line arguments and all diagnostic information.
clang: note: diagnostic msg: Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /var/folders/yn/jhqtwmzx2l31sytjj7ltz_qc0000gn/T/Image-u5GlrW.mii
clang: note: diagnostic msg: /var/folders/yn/jhqtwmzx2l31sytjj7ltz_qc0000gn/T/Image-u5GlrW.sh
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 254
وليس لدي أي فكرة عن السبب.أنا الآن المشكلة تأتي من Image.mm التي أستخدمها من simple-iphone-image-processing
مشروع.وأعتقد أن له علاقة مع قوس.هل يمكن لأي شخص إلقاء المزيد من الضوء على هذا?
شكرا
تحديث
حسنا ، لذلك أنا فقط حاولت ذلك حفنة من المرات وعملت.لذا فإن المشكلة متقطعة.سأترك هذا السؤال هنا إذا كان لدى أي شخص آخر ما يقوله.
المحلول
الوظيفة التي تنكسر هي ObjCARCOpt::runOnFunction(llvm::Function&)
.فقط للضحك ، نشرت لي رمز رونونفونكتيون () أدناه.الغرض من هذه الوظيفة هو تحسين رمز الكائن المرتبط بالقوس في llvm::Function
الكائن الذي يتم تمريره في.هذا جيد ، ولكن يبدو أن هناك خطأ في المترجم يتعلق بمعالجة الهدف-ج frankly ، والذي بصراحة لا يفاجئني.
وقد تم بالفعل تقديم تقارير الشوائب لشركة آبل (هنا, هنا, ، ربما أماكن أخرى).يجب عليك الإبلاغ عن ذلك أيضا.
حتى ذلك الحين ، هناك بعض الأشياء التي قد أقترحها.
1) منذ المشكلة متقطعة ، مجرد الحصول على مع المشروع الخاص بك.هذا يمكن أن ينجح بالنسبة لك ، أو ربما لا.بعد كل شيء ، من المفترض أن يكون المجمعون حتميين...
2) في محاولة لإيقاف قوس لكائن-ج stuff الاشياء.ربما هذا هو أبسط طريقة.
3) إيقاف التحسينات قوس.القيام بذلك عن طريق حذف -enable-objc-arc-opts
من البناء الخاص بك.يتم ترك كيفية القيام بذلك باستخدام إعدادات بناء كسكودي كتمرين للقارئ.على أي حال أعتقد أن أفضل رهان هو 2).
رمز من llvm-3.0.src/lib/Transforms/Scalar/ObjCARC.cpp
أدناه.أفضل رهان هو الخروج في if (!Run) return false;
. Run
سيكون خطأ إذا تم تعطيل القوس في الوحدة التي يتم تحليلها.حظا سعيدا ، لا تنسى أن يقدم هذا التقرير علة!
bool ObjCARCOpt::runOnFunction(Function &F) {
if (!EnableARCOpts)
return false;
// If nothing in the Module uses ARC, don't do anything.
if (!Run)
return false;
Changed = false;
PA.setAA(&getAnalysis<AliasAnalysis>());
// This pass performs several distinct transformations. As a compile-time aid
// when compiling code that isn't ObjC, skip these if the relevant ObjC
// library functions aren't declared.
// Preliminary optimizations. This also computs UsedInThisFunction.
OptimizeIndividualCalls(F);
// Optimizations for weak pointers.
if (UsedInThisFunction & ((1 << IC_LoadWeak) |
(1 << IC_LoadWeakRetained) |
(1 << IC_StoreWeak) |
(1 << IC_InitWeak) |
(1 << IC_CopyWeak) |
(1 << IC_MoveWeak) |
(1 << IC_DestroyWeak)))
OptimizeWeakCalls(F);
// Optimizations for retain+release pairs.
if (UsedInThisFunction & ((1 << IC_Retain) |
(1 << IC_RetainRV) |
(1 << IC_RetainBlock)))
if (UsedInThisFunction & (1 << IC_Release))
// Run OptimizeSequences until it either stops making changes or
// no retain+release pair nesting is detected.
while (OptimizeSequences(F)) {}
// Optimizations if objc_autorelease is used.
if (UsedInThisFunction &
((1 << IC_Autorelease) | (1 << IC_AutoreleaseRV)))
OptimizeReturns(F);
return Changed;
}