Пишите программы, которые производят сумасшедшие, неясные, смешные или просто сумасшедшие ошибки времени выполнения. Запутывание и Golfitude (краткость) не требуется.
- решения, которые выглядят так, как будто они должны работать нормально, лучше.
- решения, которые выглядят так, как будто они должны сломать один путь, но сломать другой, лучше.
- Решения, которые являются недетерминированными, лучше, если они иногда воспроизводимы.
- решения с большим расстоянием между причиной ошибки и проявлением лучше.
- бонусные баллы за ошибки, которые должны быть невозможны.
- бонусные баллы за ошибки, которые приводят к сбою среды выполнения (например, ошибки сегмента Python) или операционной системы.
Единицей оценки должны быть голоса.
Приложение 1
Неправильное поведение компилятора тоже хорошо.
import sys; sys.setrecursionlimit(~-2**31); x=lambda x:x(x); x(x);
Ответы:
Обязательный PHP (который до сих пор не исправлен на 5.4):
Выходы:
Whaa?
источник
''
(пустая строка) из класса''
(пустая строка)Ошибка компиляции GCC:
ошибка: длинный длинный длинный слишком длинный для GCC
источник
long long long
, еслиlong
иlong long
оба действительны.Командная строка Windows
Выход:
источник
^V
:( эти тяжелые дниPHP
Вы не можете передать строку в функцию, вы должны вместо этого передать строку!
Обновление: этот код НЕ является ошибкой в PHP 7. Наведите указатель мыши на / щелкните / коснитесь спойлера, чтобы узнать, почему (содержит спойлеры о том, как работает код).
источник
string
(который действителен). Подсказка типов (то, что вы делаете) работает только для классов. Поскольку классstring
не существует, он выдает ошибку.array(''=>array()'')
.удар
И вы могли бы подумать, что bash примет простое «Привет, мир!» программа.
источник
`echo hi`
превращаются воhi
внутрь строки в двойных кавычках.!
используется в качестве префикса для указателей событий . Итак, bash пытается оценить!"
, но не может найти упомянутое событие.Python 2.7
Создает довольно бесполезно:
Как простой комментарий может вызвать ошибку?
источник
#
и содержат строку,coding:
следующее слово используется в качестве описания кодировкиMathematica
При использовании Mathematica для создания графического вывода иногда возникают сообщения об ошибках, отформатированные в соответствии со спецификациями, используемыми в самой программе. Вот тривиальный пример.
источник
Графический калькулятор TI-89
Я обнаружил это, когда узнал о неявной дифференциации в исчислении средней школы. Если вы введете:
Вы получаете следующее:
С этой оговоркой, напечатанной маленькими буквами внизу экрана:
Это происходит потому, что
xy
интерпретируется не какx * y
, а как собственный символxy
.Как ни странно, если вы делаете
d(xy=0,x)
, вы получаете0 = 0
с тем же предупреждением.источник
Вы можете заставить мозг компилятора Haskell взорваться:
источник
Рубин
Нарушение правил.
Если работает на OSX, выдает, например,
источник
wrong number of arguments(1 for 0)
. Это выражается в языке, который генерируется лениво и стохастически, используя английский словарь, не обращая внимания на правдоподобность языка.DOS Prompt
дает тебе
Наткнулся на это, когда я пытался оскорбить мой компьютер за отказ от сотрудничества. Я немного расстроился, пока не узнал, что это случается только тогда, когда любви не существует. Если он существует, он с радостью сделает это.
источник
make
утилитой, а не самой DOS.make: *** No rule to make target 'love'. Stop.
make: Fatal error: Don't know how to make target 'love'
но это на Unix. На ДОСе я получаюmake is not recognized as an internal or external command, operable program or batch file
.Баш (ошибка Куайна)
Эта ошибка - Quine in Bash!
Конечно, вы должны иметь соответствующие
locale
(английский здесь).источник
...
в конце, поэтому я должен был опустить его в исходном вводе, а также.CSH
Действительно классная
csh
шутка:источник
Баш - точное воссоздание редкого исторического сообщения об ошибке
Выход:
Требуется, чтобы исходный код ядра Linux был распакован в обычном месте.
Интересный факт: я однажды получил это сообщение всерьез, когда запустил старый ленточный принтер.
источник
С (++)
Если ошибки во время компиляции считаются, вот одна (при условии файла с именем «crash.c»).
Это заполняет экран этим после компиляции (готов Ctrl-C)
Еще один фрагмент кода, который отлично компилируется (без предупреждений
-Wall
и иллюстрирует прекрасную безопасность типов C </ s>Запуск это дает:
источник
Рубин
Чувствую, как странно, что это может произойти на языке высокого уровня.
производит
источник
Это очень старый, но для тех, кто помнит BCPL,
будет жаловаться
источник
р
Технически это не ошибка, а предупреждение, но, тем не менее, это смешно и происходит по совершенно эзотерическим причинам.
[[EDIT]] Кажется, что причина некоторых частей забавных предупреждений кроется в RStudio, а не в R, так что это менее интересно, чем я думал. Первый пример, т.
plot(1:2, NotAGraphicalParameter = "ignore.me")
Е., Однако, все еще воспроизводим в «голом» R и достаточно забавен сам по себе. [[/ EDIT]]Как будто R помнит наши оскорбления. Только не долго.
Я не могу объяснить, почему это происходит, но это воспроизводимо. На самом деле это происходит каждый раз, когда вы вводите некоторый «не графический параметр» для графика 1, а затем делаете график 2 совершенно безупречным образом. Особенно забавно, что мы получаем 12 предупреждений «не графический параметр» для второго графика, а только 6 для первого. Еще одна забавная вещь: если вы поставите «не графический параметр» со значением NULL, то никакие условия не будут выброшены:
И чтобы стать еще более нелепым, давайте нарисуем некоторые линии поверх ранее нарисованного графика:
Это должноневыиграть большое время, если нет справедливости.источник
plot(2:3)
сразу после использованияplot(1:2, NotAGraphicalParameter = "ignore.me")
. Ты переопределил что-то в своем.Rprofile
?Командный скрипт Windows
ВНИМАНИЕ, это вилочная бомба!
Это выведет ненужные вопросы о выходе, если вы попытаетесь выйти из консоли каким-либо образом.
Бонусы:
источник
д оскорбляет тебя
источник
Как насчет ошибок оптимизации компилятора:
Это специфично для gcc> = 4.7. Компилируется и работает нормально с
gcc -O0 -Wall
. Компилирует с,gcc -O2 -Wall
но приводит к инф-циклу.Также обратите внимание, как gcc видит проблему для меньшего размера
N
, напримерN = 3
:Кстати, это было взято из сообщения об ошибке, хотя я не могу вспомнить номер ошибки.
источник
arr[N]
(вне массива) и доступarr[0]
(который не инициализирован)). Поскольку все разрешено для неопределенного поведения, это не ошибка оптимизации, но очень маловероятно, что это будет то, что хотел пользователь.Мне всегда нравилась эта странность в APL:
Он разбирает внутреннюю часть функций лениво!
источник
PHP
[]
используется для того, чтобы подтолкнуть элементы. Однако, если вы используете его для литерала массива, PHP выдаст сумасшедшее сообщение об ошибке, даже если вы назначите его для push. Требуется PHP> = 5.4, так как раньше вы не могли индексировать массивы литералов.Выход:
источник
питон
Вложенные блоки
Python 2.7:
SystemError: too many statically nested blocks
Самореферентные списки
Python 2.7
Правда не постоянная
Проблема в следующем примере заключается в том, что в Python 2.7
True
иFalse
не являются константами. АTrue
иFalse
может автоматически получить отлиты к1
и0
:Python 2.7:
Intendation
Вы получаете ошибку?
Смешивание табуляции и пробелов было хорошо в Python 2.7 ... но имейте в виду уровень отступов!
источник
print a
.Я начну:
Есть догадки, почему эта программа падает? : D
Смотрите
jane
прогон: http://ideone.com/gtaZ3источник
B::BreakHorribly
называет себя, прежде чемdoSomethingDiabolical
называется, поэтомуdelete this
никогда не достигается.delete this
того?удар
Я получил это сегодня, когда попытался выяснить, можно ли защитить систему от
rm -rf /
.Сообщение об ошибке с
LANG=C
:источник
rm
, а неbash
. Не уверен, какой язык вы должны объявить в заголовке, учитывая, что вы использовали егоbash
для настройки.р
Еще один, который не смешен и, опять же, скорее предупреждение, чем ошибка, но все же приятно:
Мне нравится последний бит: 50 или больше :)
И фактические предупреждения:
FUN = FUN!
источник
CPython
Результат:
источник
ctypes.pythonapi._Py_Dealloc(ctypes.py_object(None))
.Баш - нелогичный побег неудачи
возвращается
(расширение истории в командной строке не предотвращается двойными кавычками)
Бонус:
Выход вряд ли будет тем, что ожидается. Нажмите вверх , чтобы получить команду еще раз, и заметьте , что изменилось от того, что вы набрали. Если вы нажмете вверх и введете пару раз, скорее всего, ваши результаты начнут выглядеть несколько ужасно. Попробуйте сами.
источник
C # - Рекурсивный, ленивый генератор Фибоначчи
Этот код выглядит хорошо, верно? Довольно простой генератор Фибоначчи, приправленный некоторой рекурсией и ленивым перечислением. Должно сработать.
Нет! Запуск этого вызовет OverflowException. Это потому, что мы используем десятичную дробь, а 141-е число Фибоначчи (~ 8.1E28) превышает максимальное значение десятичной дроби (~ 7.9E28).
Однако int не генерирует OverflowException, когда вы превышаете его максимальное значение. Вместо этого он, как и ожидалось, переполняется до отрицательного значения. Так что если мы заменим int вместо десятичного, как в следующем коде, оно должно работать, верно?
Если вы читаете код, должно быть очевидно, почему это не сработает. Если вы не ... Я не просто изменил тип с десятичного на int; Я также прокрался в вызов ToList () в выражении foreach. Это заставит возвращенный перечислитель быть оцененным. Это приведет не к 141 рекурсии, а к бесконечному количеству рекурсий. На самом деле, задолго до того, как он достигнет бесконечности, он, конечно, переполнит стек, в результате чего среда выполнения сгенерирует исключение StackOverflowException. (бонус: это исключение не может быть перехвачено, поэтому это приведет к краху среды выполнения)
источник