Я хотел бы посмотреть, кто может заставить Python привести к фатальному сбою с самым креативным кодом. Это означает, что когда программа запускается, например, Windows, вступает во владение и появляется что-то вроде «IDLE прекратил работать», или Linux будет делать то же, что и Linux, в случае сбоя программы.
Правила:
Это должно быть сделано в Python 2.7 или выше (поэтому старые ошибки не используются, которые были исправлены в будущих версиях Python).
Определение «сбой» - «заставить IDLE или Python выйти непреднамеренно». Это не означает «остановка IDLE или Python и обратная связь». Это также означает, что exit, sys.quit, abort и т. Д. Не являются правильными ответами. Например, это не будет принято:
import sys try: print c # Crashes Here, as c is not defined. except NameError, SyntaxError: print "Oh No!" sys.exit()
Заставить Python перестать отвечать не принято.
Код должен быть объяснен на то, что он делает для сбоя. Ссылка на сообщение об ошибке в порядке.
Ответ с наибольшим количеством голосов после 10 дней побед! Начать!!
РЕДАКТИРОВАТЬ: Позвольте мне прояснить, что цель состоит не в том, чтобы заставить Python просто остановить выполнение программы с трассировкой. Цель состоит в том, чтобы заставить Python полностью потерпеть крах или перестать работать. Это означает, что если эта задача будет успешно выполнена, Windows выдаст это (я не разбиваю Word здесь, это всего лишь пример того, что должно произойти для другой программы):
или это:
источник
prnt
в вопросе намеренно.Ответы:
Должно быть, это был турнир по коду для игры в гольф;) - я думаю, что креативность - это утверждение, которое делает код: «Я просто не знаю, что здесь происходит ...»
Скопируйте и вставьте следующий символ в IDLE, работающем в Windows:
Авария как-то связана с тем, что Windows кодирует символ UTF-16, и с неудачным преобразованием символа UTF-8 в IDLE ...
Изменить: ошибка питона # 13153
источник
𐒢
, прежде чем вы даже сможете запустить его.ctypes
злоупотребление:Это приводит 1 к адресу и разыменовывает его. В любой здравомыслящей системе (т. Е. Той, в которой 0x00000001 не является сопоставленным адресом), это мгновенно прекратит работу с ошибкой.
источник
ctypes
в Windows каким-либо другим способом, но, возможно, не так мало символов.60
Не моя собственная идея. Скопировано из Python Wiki здесь .
Это вызывает бесконечную рекурсию и не останавливается интерпретатором, потому что мы изменили предел рекурсии.
источник
signal
злоупотребление (не только для Windows):В большинстве систем (в которых SIGILL = 4) это приведет к уничтожению Python с ошибкой «недопустимая инструкция».
Или вы можете убить программу, используя будильник убийцы :
Через одну секунду Python умирает с загадочным сообщением «Будильник».
источник
В Python 3.3:
В Python 2.7 объекты кода немного отличаются:
Да, вы можете передать любой старый мусор интерпретатору байт-кода, и он его выполнит ( выпуск Python # 17187 ).
источник
exec type((lambda:0).func_code)(0,1,0,0,'Q',(),(),(),'','',0,'')
.__code__
.Рекурсивные итераторы используют стек C, а не стек Python ( проблема № 14010 и проблема № 14507 ):
источник
Один простой способ разбить интерпретатор - обмануть None:
В качестве бонуса, вот умный способ Segfault Python 2:
Что именно это делает, оставлено читателю в качестве упражнения.
источник
Кто-то думал, что он может помешать
FlagsType
созданию новых объектов путем установкиFlagsType.tp_new = NULL
, но забыл удалить метод ( проблема # 13204 ):(
sys.version_info
имеет ту же ошибку.)источник
Использование
alloca
вctypes
модуле ( выпуск № 13096 ):источник
Один из возможных способов сбить мой Python с
MemoryError
:источник
MemoryError
. Это должно быть закрыто ОС.