Компиляция с LLVM / Clang вызывает сбой, а не GCC 4.2 - PullRequest
0 голосов
/ 19 июля 2010

Я работаю над приложением для iPhone, и у меня проблемы с компилятором.Вот нижний предел:

  1. Я компилирую с использованием Xcode 3.2.3, ориентируясь на iOS 4.0: мое устройство - iPod второго поколения под управлением iOS 4.0.
  2. Компиляция с GCC4.2: работает как на симуляторе, так и на устройстве
  3. Компиляция с помощью компилятора LLVM 1.5: работает на симуляторе, но не на устройстве.
  4. Компиляция с помощью LLVM GCC 4.2: та же проблема, что и с компилятором LLVM 1.5.

Когда происходит сбой, приложение даже не заканчивает загрузку.Вот как выглядит журнал:

run
Running…
[Switching to thread 11523]
[Switching to thread 11523]
sharedlibrary apply-load-rules all
continue
Program received signal:  “EXC_BAD_ACCESS”.
warning: check_safe_call: could not restore current frame

warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.

Я понятия не имею, что с этим происходит.Я действительно хочу обновить свой код, чтобы использовать последние функции, анонсированные на WWDC (неявное @synthesize, возможность добавлять переменные экземпляра в категории и т. Д.), Но для этого необходим Clang.

1 Ответ

3 голосов
/ 19 июля 2010

Похоже, что-то измотано на память. Точнее, в стеке.

Есть несколько довольно значительных, хотя и весьма тонких, различий в коде между LLVM и GCC. Имейте в виду, что LLVM-GCC - это действительно GCC-> LLVM; то есть синтаксический анализатор GCC, обеспечивающий механизм генерации кода LLVM.

Таким образом, я подозреваю, что вы попали в прекрасный случай. Либо ошибка в коде LLVM, либо ошибка в вашей программе, которая проявляется как сбой такого рода.

Вдобавок ко всему, я мог себе представить, что сбой при копировании блока и последующем выполнении этого блока в другом потоке может привести к аварийному завершению, подобному этому.

В любом случае, если возможно, сообщите об ошибке.

...