Ecrivez des programmes qui génèrent des erreurs d'exécution folles, obscures, ridicules ou tout simplement stupides. Obfuscation et golfitude (brièveté) non requis.
- les solutions qui semblent bien fonctionner sont préférables.
- les solutions qui semblent devoir se briser d'un côté, mais d'un autre, sont meilleures.
- les solutions non déterministes sont préférables tant qu'elles sont parfois reproductibles.
- les solutions avec une longue distance entre cause d'erreur et manifestation sont meilleures.
- points de bonus pour la production d'erreurs qui devraient être impossible.
- points bonus pour les erreurs qui font planter le moteur d'exécution (comme une erreur de segment python) ou le système d'exploitation.
L'unité de score doit être upvotes.
Addendum 1
Les comportements incorrects du compilateur sont bien aussi.
import sys; sys.setrecursionlimit(~-2**31); x=lambda x:x(x); x(x);
Réponses:
Le PHP one obligatoire (qui n’a toujours pas été corrigé à partir de 5.4):
Les sorties:
Whaa?
la source
''
(chaîne vide) de la classe''
(chaîne vide)Erreur de compilation Gcc:
erreur: long long long est trop long pour GCC
la source
long long long
, silong
etlong long
sont valables.Invite de commande Windows
Sortie:
la source
^V
:( dur joursPHP
Vous ne pouvez pas passer une chaîne à une fonction, vous devez plutôt passer une chaîne!
Mise à jour: Ce code N'EST PAS une erreur en PHP 7. Passez la souris sur / cliquez / touchez un spoiler pour vérifier pourquoi (contient des spoilers expliquant le fonctionnement du code).
la source
string
(qui est valide). L'indication de type (cette chose que vous faites) ne fonctionne que pour les classes. Comme la classestring
n'existe pas, une erreur est générée.array(''=>array()'')
.frapper
Et vous penseriez que bash accepterait un simple "Hello, world!" programme.
la source
`echo hi`
qu'elles se transforment en l'hi
intérieur de la chaîne entre guillemets.!
est utilisé comme préfixe pour les désignateurs d'événement . Ainsi, bash essaie d'évaluer!"
, mais ne peut pas trouver l'événement référencé.Python 2.7
Génère le peu utile:
Comment un simple commentaire peut-il générer une erreur?
la source
#
et contiennent la chaîne,coding:
mot suivant utilisé comme description d'encodageMathematica
Lorsque vous utilisez Mathematica pour créer une sortie graphique, il se produit parfois des messages d'erreur formatés en fonction des spécifications utilisées dans le programme lui-même. Voici un exemple trivial.
la source
Calculatrice graphique TI-89
J'ai découvert cela en apprenant la différenciation implicite dans le calcul au lycée. Si vous entrez:
Vous obtenez ce qui suit:
Avec cette mise en garde, imprimée en minuscules lettres au bas de l'écran:
Cela se produit parce que
xy
n’est pas interprété commex * y
, mais plutôt comme son propre symbolexy
.Bizarrement, si vous le faites
d(xy=0,x)
, vous recevez0 = 0
le même avertissement.la source
Vous pouvez faire exploser le cerveau du compilateur Haskell:
la source
Rubis
Règles abuser.
Si exécuté sur OSX, produit, par exemple
la source
wrong number of arguments(1 for 0)
. Cela s'exprime par le biais d'une langue générée de manière stochastique et paresseuse en utilisant le vocabulaire anglais sans trop se soucier de la plausibilité linguistique.Invite DOS
vous donne
Je suis tombé sur cela alors que j'essayais d'insulter mon ordinateur pour son manque de coopération. Cela m'a rendu un peu triste jusqu'à ce que je découvre que cela ne se produit que si l'amour n'existe pas. S'il existe, il le fera volontiers.
la source
make
utilitaire, pas au DOS lui-même.make: *** No rule to make target 'love'. Stop.
make: Fatal error: Don't know how to make target 'love'
mais c'est sur Unix. Sous DOS, je comprendsmake is not recognized as an internal or external command, operable program or batch file
.Bash (erreur Quine)
Cette erreur est une Quine in Bash!
Bien sûr, vous devez avoir le pertinent
locale
(anglais ici).la source
...
à la fin, donc j'ai dû l'omettre aussi dans l'entrée originale.CSH
Une
csh
blague vraiment classique :la source
Bash - récréation précise d'un message d'erreur historique rare
Sortie:
Nécessite que le code source du noyau Linux soit décompacté à l’emplacement habituel.
Fait amusant: j’ai une fois reçu ce message sérieusement lors de l’exécution d’une vieille imprimante à ruban.
la source
C (++)
Si les erreurs de compilation comptent, en voici un (en supposant un fichier nommé "crash.c").
Cela remplit l'écran avec ceci lors de la compilation (avoir Ctrl-C à portée de main)
Un autre extrait qui compile parfaitement (aucun avertissement sous
-Wall
et illustre la belle sécurité de type de C </ s>Le lancer donne:
la source
Rubis
C'est étrange que cela se produise dans un langage de haut niveau.
produit
la source
C'est très vieux, mais pour ceux qui se souviennent de BCPL,
se plaindre
la source
R
Ce n’est techniquement pas une erreur mais un avertissement mais c’est quand même ridicule et cela se produit pour des raisons complètement ésotériques.
[[EDIT]] Il semblerait que la cause de certaines parties des avertissements amusants réside dans RStudio plutôt que R en tant que tel, donc c'est moins intéressant que je ne le pensais au départ. Le premier exemple, c’est-à
plot(1:2, NotAGraphicalParameter = "ignore.me")
- dire , cependant, est toujours reproductible dans "naked" R et est assez drôle en soi. [[/ EDIT]]C'est comme si R se souvenait de nos insultes. Mais pas pour longtemps.
Je ne peux pas vraiment expliquer pourquoi cela se produit - mais c'est reproductible. En fait, cela se produit chaque fois que vous fournissez du "pas un paramètre graphique" au tracé 1, puis effectuez un tracé 2 de manière totalement impeccable. Il est particulièrement amusant de recevoir 12 avertissements "pas un paramètre graphique" pour le deuxième tracé, mais seulement 6 pour le premier. Une autre chose amusante est que si vous fournissez "pas un paramètre graphique" avec une valeur NULL, aucune condition n'est levée:
Et pour être encore plus ridicule, tracez quelques lignes au-dessus de l'intrigue précédemment dessinée:
Ceci devraitne pasgagner gros temps à moins qu'il n'y ait pas de justice.la source
plot(2:3)
juste après avoir utiliséplot(1:2, NotAGraphicalParameter = "ignore.me")
. Avez-vous redéfini quelque chose dans votre.Rprofile
?Script de commande Windows
ATTENTION, ceci est une fourchette!
Si vous essayez de quitter la console de quelque manière que ce soit, cela posera des questions compliquées sur la façon de quitter.
Bonus:
la source
q vous insulte
la source
Qu'en est-il des erreurs d'optimisation du compilateur:
Ceci est spécifique à gcc> = 4.7. Compile et fonctionne bien avec
gcc -O0 -Wall
. Compile avecgcc -O2 -Wall
mais aboutit à une boucle inf.Notez également comment gcc voit le problème pour les plus petits
N
, par exempleN = 3
:Btw, cela a été pris à partir d'un rapport de bogue, je ne me souviens pas du numéro de bogue cependant.
la source
arr[N]
(en dehors du tableau), et accéderarr[0]
(ce qui n’est pas initialisé)). Étant donné que tout est permis pour un comportement indéfini, il ne s'agit pas d'une erreur d'optimisation, mais très probablement de ce que l'utilisateur souhaitait.J'ai toujours aimé cette bizarrerie dans APL:
Il analyse paresseusement l'intérieur des fonctions!
la source
PHP
[]
est utilisé pour pousser des éléments. Cependant, si vous l'utilisez pour un littéral de tableau, PHP crée un message d'erreur insensé, même si vous l'assignez pour pousser. Requiert PHP> = 5.4, car auparavant, vous ne pouviez pas indexer les littéraux de tableaux.Sortie:
la source
Python
Blocs imbriqués
Python 2.7:
SystemError: too many statically nested blocks
Listes d'auto-référencement
Python 2.7
True n'est pas une constante
Le problème dans l'exemple suivant est celui de Python 2.7
True
etFalse
ne sont pas des constantes. EtTrue
etFalse
peut automatiquement être projeté sur1
et0
:Python 2.7:
Intendation
Avez-vous l'erreur?
Le mélange des onglets et des espaces était correct dans Python 2.7 ... mais faites attention au niveau d'indentation!
la source
print a
.Je vais commencer:
Des suppositions pourquoi ce programme se bloque? :RÉ
Voir
jane
run: http://ideone.com/gtaZ3la source
B::BreakHorribly
s’appelle avant dedoSomethingDiabolical
s’appeler, doncdelete this
n’est jamais atteint.delete this
, n'est-ce pas?Frapper
Je l’ai compris aujourd’hui lorsque j’ai essayé de savoir s’il était possible de protéger le système
rm -rf /
.Le message d'erreur avec
LANG=C
:la source
rm
, pasbash
. Vous ne savez pas quelle langue vous devez déclarer dans le titre, étant donné que vous l’avez utilisébash
pour le configurer.R
Un autre qui n'est pas ridicule et, encore une fois, un avertissement plutôt qu'une erreur, mais toujours agréable:
J'aime le dernier bit: 50 ou plus :)
Et les avertissements réels:
FUN = FUN!
la source
CPython
Le résultat:
la source
ctypes.pythonapi._Py_Dealloc(ctypes.py_object(None))
.Bash - échec d'échappement contre-intuitif
résultats
(les guillemets doubles n'empêchent pas l'expansion de l'historique sur la ligne de commande)
Prime:
Il est peu probable que la sortie soit celle attendue. Appuyez vers le haut pour obtenir à nouveau la commande et notez que sa modification est différente de celle que vous avez saisie. Si vous appuyez plusieurs fois vers le haut et entrez, il est probable que votre sortie commencera à avoir un aspect horrible. Essayez par vous-même.
la source
C # - Générateur de Fibonacci récursif et paresseux
Ce code a l'air bien, non? Un générateur de Fibonacci assez simple, agrémenté de récursion et de dénombrement paresseux. Devrait marcher.
Nan! Cela entraînera une OverflowException. En effet, nous utilisons le nombre décimal et le 141e nombre de Fibonacci (~ 8.1E28) dépasse la valeur maximale du nombre décimal (~ 7.9E28).
Cependant, l'int ne lève pas d'exception OverflowException lorsque vous dépassez sa valeur maximale. Au lieu de cela, comme prévu, déborde à une valeur négative. Donc, si nous remplaçons int par decimal, comme dans le code suivant, cela devrait fonctionner, non?
Si vous lisez le code, vous comprendrez pourquoi cela ne fonctionnera pas. Si vous ne l'avez pas fait ... je n'ai pas simplement changé le type décimal en int; Je me suis également faufilé dans un appel à ToList () dans la déclaration foreach. Cela forcera l'énumérateur renvoyé à être évalué avec impatience. Cela ne causera pas 141 récursions, mais un nombre infini de récursions. En réalité, bien avant qu’il atteigne l’infini, il débordera bien entendu de la pile, ce qui obligera l’exécution à lancer une exception StackOverflowException. (bonus: cette exception ne peut pas être interceptée, elle va donc crasher le runtime)
la source