문제

내 응용 프로그램은 빌드,실행,시뮬레이션 등을 수행합니다.그 밖의좋아!모든 것은 시뮬레이터와 물리적 장치 모두에서 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 전달된 개체입니다.그것은 괜찮지 만 컴파일러에 객관적-기음++처리와 관련된 버그가있는 것 같습니다.이 버그는 솔직히 나를 놀라게하지 않습니다.

버그 보고서는 이미 애플에 제출되었습니다(여기, 여기,아마도 다른 장소).당신도 보고해야 합니다.

그때까지,내가 제안 할 수있는 몇 가지가 있습니다.

1)문제가 간헐적 이기 때문에,다만 너의 계획사업에 위에 얻으십시요.이것은 당신을 위해 밖으로 작동 할 수,또는 어쩌면.결국 컴파일러는 결정론적이어야 합니다...

2)에 대 한 호를 해제 하려고 합니다.이것은 아마도 가장 간단한 방법 일 것입니다.

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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top