Gostaria de ver quem pode fazer o Python sofrer um acidente fatal com o código mais criativo. Isso significa que, quando o programa for executado, o Windows, por exemplo, assumirá o controle e aparecerá algo como “O IDLE parou de funcionar” ou o Linux fará o que o Linux fizer quando um programa travar.
Regras:
Isso deve ser feito no Python 2.7 ou superior (para que não sejam explorados erros antigos que foram corrigidos em versões futuras do Python).
A definição de "falha" é "fazer com que o IDLE ou o Python saia de maneira não intencional". Isso não significa "fazer com que o IDLE ou o Python parem e dê um traceback". Isso também significa que exit, sys.quit, abort etc não são respostas válidas. Por exemplo, isso não será aceito:
import sys try: print c # Crashes Here, as c is not defined. except NameError, SyntaxError: print "Oh No!" sys.exit()
Fazer o Python parar de responder não é aceito.
O código deve ser explicado sobre o que faz para falhar. Um link para um relatório de bug está correto.
A resposta mais votada após 10 dias vence! Início!!
EDIT: Posso deixar claro que o objetivo não é fazer com que o Python pare de executar o programa com um rastreamento. O objetivo é fazer o Python travar completamente ou parar de funcionar. Isso significa que, se essa tarefa for concluída com êxito, o Windows forneceria isso (não estou travando o Word aqui, é apenas um exemplo do que deve acontecer para um programa diferente):
ou isto:
fonte
prnt
na questão é intencional.Respostas:
Deveria ter sido um concurso de código de golfe;) - Acho que a criatividade é a afirmação do código: "Eu simplesmente não sei o que está acontecendo aqui ..."
Copie e cole o seguinte caractere no IDLE em execução no Windows:
A falha tem algo a ver com o caractere sendo codificado como UTF-16 pelo Windows e a conversão sem êxito em um caractere UTF-8 pelo IDLE ...
Edit: python bug # 13153
fonte
𐒢
, antes mesmo de executá-lo.ctypes
Abuso:Isso converte 1 em um endereço e o desreferencia. Em qualquer sistema sensato (por exemplo, aquele no qual 0x00000001 não é um endereço mapeado), isso ocorrerá um erro instantâneo.
fonte
ctypes
no Windows de alguma outra maneira, mas talvez não em tão poucos caracteres.60
Não é minha ideia. Copiado do Python Wiki aqui .
Isso causa uma recursão infinita e não é interrompido pelo intérprete porque alteramos o limite de recursão.
fonte
signal
abuso (somente não Windows):Na maioria dos sistemas (nos quais SIGILL = 4), isso mata o Python com um erro de "instrução ilegal".
Ou você pode matar o programa usando o despertador matador :
Após um segundo, o Python morre com a mensagem enigmática "Despertador".
fonte
No Python 3.3:
No Python 2.7, os objetos de código são um pouco diferentes:
Sim, você pode passar qualquer lixo antigo para o interpretador de código de bytes e ele será executado ( problema no Python # 17187 ).
fonte
exec type((lambda:0).func_code)(0,1,0,0,'Q',(),(),(),'','',0,'')
.__code__
.Os iteradores recursivos usam a pilha C, não a pilha Python ( problema nº 14010 e problema nº 14507 ):
fonte
Uma maneira fácil de travar o intérprete é enganá-lo e desalocar Nenhum:
Como bônus, aqui está uma maneira inteligente de segfault Python 2:
O que exatamente isso faz é deixado como um exercício para o leitor.
fonte
Alguém pensou que poderia impedir a criação de novos
FlagsType
objetos definindoFlagsType.tp_new = NULL
, mas esqueceu de remover o método ( edição 13204 ):(
sys.version_info
tem o mesmo bug.)fonte
Uso de
alloca
noctypes
módulo ( edição # 13096 ):fonte
Uma maneira possível que trava meu Python com
MemoryError
:fonte
MemoryError
. Ele precisa ser fechado pelo sistema operacional.