Внутренняя ошибка компилятора Xcode 4: ошибка шины - PullRequest
7 голосов
/ 31 марта 2011

Xcode 4.0.1 начал выдавать мне внутреннюю ошибку компилятора.Это просто говорит "Ошибка шины".Это происходит внизу одного из моих файлов .m, длина которого составляет почти 4000 строк.

Я посмотрел на этот вопрос , но я не делаю эту ошибку,и когда это происходит, я обычно могу это исправить, добавив куда-нибудь несколько случайных строк кода.Когда он впервые появился, я отследил его до того места, где я устанавливал фрейм представления, в связке нового кода:

view.frame = CGRectMake(otherView.frame.origin.x, 0, otherView2.frame.size.width, 40);

Если я заменил ссылки на другие ViewView и другие ViewView2 жестко закодированными значениями, проблемаушел.Или, если я просто поставлю int x = 0; над ошибочной строкой, она исчезнет.

Я также посмотрел на этот вопрос , но на него нет четкого ответа.Кажется, это не какая-то отдельная строка кода;это кажется случайным.И у Google нет четкого решения, которое я мог бы найти.

Я пробовал все возможные компиляторы для проекта (GCC 4.2, LLVM GCC 4.2 и LLVM Compiler 2.0, и у них всех естьУ меня есть Static Analyzer для запуска каждой сборки, и отключение его не помогает. Этот вопрос , кажется, указывает, что это ошибка в компиляторе. Я просто застрял? Есть ли обходной путь?

РЕДАКТИРОВАТЬ: Другой пример: это произошло снова, и я отследил его до:

[headerView centerViewVertically:milesLabel pixelsFromRight:pointLabel.frame.size.width + 20];

Я изменил его на:

int x = pointLabel.frame.size.width;
[headerView centerViewVertically:milesLabel pixelsFromRight:x + 20];

И это снова заработало.

Ответы [ 8 ]

1 голос
/ 27 июня 2011

Я только что это произошло (не в первый раз).Я до сих пор не выяснил, что именно является причиной проблемы, но она скомпилируется для симулятора, но не для устройства.Перемещение моего [[array alloc] init] из моего метода init в отдельный метод установки устранило проблему.

Может быть, я выделяю слишком много памяти за слишком короткий промежуток времени или что-то в этом роде?Это кажется маловероятным, поскольку несколько [[array alloc] init] настроек массива выполняются до и после того, что я пытался добавить. Все делалось абсолютно идентично тому, как делались другие массивы, так почему это былопроблема на этот раз я пока не понимаю.

1 голос
/ 15 сентября 2011

Я также получил эту ошибку, только при компиляции на устройстве, после того, как xcode проверил модернизацию моего кода.Я переключил компилятор на Apple LLVM 2.1 как в проекте, так и в настройках сборки целей и снова запустился.Это подняло некоторые заблуждения;в проекте и ошибка ошибки шины исчезла.

1 голос
/ 26 мая 2011

Я нажал эту ошибку, и оказалось, что это была моя ошибка, вызванная в основном типом o или, точнее, вставкой o.

Я создавал две метки и добавлял их в подпредставление. Код был по сути такой.

UILabel *pointsLabel = [[UILabel alloc] initWithFrame:ptsFrame];
...
[self addSubview:pointsLabel];
[pointsLabel release];

UILabel *typeLabel = [[UILabel alloc] initWithFrame:typeFrame];
...
[self addSubview:pointsLabel];
[typeLabel release];

Уведомление во втором addSubview Я снова добавил pointsLabel, хотя я уже выпустил его (и действительно хотел добавить typeLabel). Я ожидал бы, что это также вызовет ошибку времени выполнения, но по какой-либо причине это вызвало ошибку шины, описанную выше. Что-то искать.

0 голосов
/ 28 сентября 2011

Используете ли вы какую-либо устаревшую функцию?

Я удаляю все вызовы устаревшей функции и работает!

0 голосов
/ 08 сентября 2011

Я столкнулся с этой проблемой в проекте, но только при компиляции для устройства.Когда я создавал симулятор, он работал нормально.

Мне удалось обойти эту проблему, просто изменив мой компилятор с «LLVM GCC 4.2» на «LLVM Compiler 2.0» в настройках сборки проекта.

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

0 голосов
/ 22 августа 2011

Я получил ту же ошибку, поставив следующую строку кода:

tempButton.titleLabel.adjustsFontSizeToFitWidth = YES;

Удвоение той же строки кода не выдало ошибку:

tempButton.titleLabel.adjustsFontSizeToFitWidth = YES;
tempButton.titleLabel.adjustsFontSizeToFitWidth = YES;
0 голосов
/ 24 мая 2011

Мне действительно кажется, что ошибка компилятора.

У меня та же проблема (Xcode 4.0.2; LLVM GCC 4.2).В viewDidLoad контроллера представления у меня была строка:

self.title = @"Enter your details";

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

self.title = nil;

сборка скомпилирована нормально.

Подробный журнал сборки содержал:

MyViewController.m:316: internal compiler error: Bus error
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
{standard input}:0:End-of-File not at end of a line
{standard input}:1704:End-of-File not at end of a line
{standard input}:unknown:Partial line at end of file ignored
{standard input}:1695:non-relocatable subtraction expression, "L_OBJC_CLASSLIST_REFERENCES_$_6" minus "LPC11_18"
{standard input}:1695:symbol: "L_OBJC_CLASSLIST_REFERENCES_$_6" can't be undefined in a subtraction expression
{standard input}:1692:non-relocatable subtraction expression, "L_OBJC_SELECTOR_REFERENCES_36" minus "LPC11_17"
{standard input}:1692:symbol: "L_OBJC_SELECTOR_REFERENCES_36" can't be undefined in a subtraction expression
[... any many more lines like this ...]
0 голосов
/ 31 марта 2011

Вы освободили какой-либо из объектов, таких как otherView, я уверен, что это приводит к ошибке шины в xcode.

...