Вы когда-нибудь разбивали компилятор? - PullRequest
19 голосов
/ 11 октября 2008

Каждый (по крайней мере, каждый, кто использует скомпилированный язык) сталкивался с ошибками компиляции, но сколько раз вы действительно врезались в компилятор?

Моя справедливая доля "внутренних ошибок компилятора" , но большинство ушло просто путем повторной компиляции. У вас есть (минимальный) кусок кода, который приводит к сбою компилятора?

Ответы [ 39 ]

0 голосов
/ 04 декабря 2008

Это происходит не так часто, как раньше, но иногда у прекомпилятора ASP.net возникают проблемы - я лично такого не видел, но однажды я исправил проблему в другом проекте, где у них были конфликты имен, потому что они неправильно использовали пространства имен (вызвало сбои компилятора) во время предварительной компиляции.

В старые добрые времена (неуправляемый MSVC ++) у нас случался странный сбой компилятора, обычно из-за ссылок во внешние статические классы win32 (.lib) и пара нечетных кусков кода, которые иногда вызывали проблемы, но все они были очень быстро.

0 голосов
/ 12 октября 2008

Однажды, когда я использовал пример генераторов из документации по Python, он сломал версию Python, которую мы использовали. На той же неделе одному из моих коллег удалось неправильно использовать FFI, так что любой расчет, связанный с числом 3, может привести к краху Python.

0 голосов
/ 22 октября 2008

Мне удалось отключить интерпретатор Python. Конечно, в то время я работал над расширением C и получал его не совсем правильно.

0 голосов
/ 10 апреля 2010

Не компилятор, а компоновщик в Visual Studio 2008 для меня происходит несколько раз в день под 64-битной Windows 7. Сразу здание снова всегда работает без сбоев. Microsoft, кажется, не волнует ...

Не совсем ответ на ваш вопрос, потому что не сам код вызывает его, но я всегда готов рассуждать об этой конкретной проблеме: -)

0 голосов
/ 04 декабря 2008

Мне много раз приходилось разбивать компилятор F #; но это нечестно, так как это был бета / альфа / исследовательский / т. д. компилятор.

0 голосов
/ 18 апреля 2010

У меня было что-то более интересное: Внутренняя ошибка компоновщика ...

Вы знаете, как вызвать ТО?

0 голосов
/ 11 октября 2008

Я сделал. Некоторые версии Delphi (скажем, № 4) очень часто зависали с загадочными сообщениями об ошибках.

Более новые версии (2006 и более) стабильны, но не прочны. (7 было здорово в этом случае).

Сбои компилятора часто происходят с большими правками и отладкой сессий сложных проектов (много dll). В большинстве случаев достаточно перезагрузки ide. Но иногда вам нужно перезагрузить компьютер.

O, и я однажды разбил OS2 вместе с компилятором, потому что файл подкачки стал слишком большим.

0 голосов
/ 23 сентября 2010

Я однажды написал программу на C, которая заставляла компьютер самопроизвольно перезагружаться. Одним из недостатков является то, что это не имело никакого отношения к слиянию, которое я пытался реализовать в то время.

К счастью, все прошло, как только я выяснил ошибки моего указателя.

0 голосов
/ 04 декабря 2008

Я не знаю, назову ли я это сбоем, но sdcc ( Компилятор малого устройства C ) не может компилировать код, сформированный определенным образом:

  • Цель: 8051
  • Код должен был выполняться в 512-байтовом кеше, загруженном с внешнего тестера
  • Тестер контролирует и хранит код - кеш не может получить следующую страницу
  • Запрещены вызовы функций - ПК (счетчик программ) будет переходить на место, не находящееся в кеше; макросы препроцессора были использованы для выполнения практики модульного кодирования
  • Переходы (ветвления) разрешены, если они не пропускаются из кэша
  • Нет константных значений - в разделе данных программного кода, который заставляет код в кеше извлекать что-то, не находящееся в кеше - константа препроцессора (#define) OK здесь

Макросы препроцессора развертываются, в результате чего получается плоский, но большой код - все в main (); выполнение пропускает код запуска (настройка стека и т. д.) и начинается в начале функции main ()

Соответствующая часть этого ответа:

Иногда sdcc отказывается компилировать синтаксически правильный код с сообщением о нехватке памяти. Это даже произошло при компиляции на 64-битных компьютерах с 8 ГБ оперативной памяти.

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

Я не пробовал, но компилятор Keil 8051, вероятно, мог бы обработать проблемный код.

...