Heute habe ich einen relativ spaßigen Bug gefunden:
An einer Stelle in unserer Software, wo man verschiedene Datentypen, Formeln u.s.w. eingeben konnte, habe ich einfach mal 0815 eingetippt. Das wurde nicht wie erwartet als Integer, sondern als Double erkannt, also 815.0 angezeigt. Ich denke, das kann doch nicht sein, und probiere 042 - das wurde zu 42, Integer. Liegt es etwa an der Länge? Nein, 01234 wurde auch zu 1234, Integer. Öhm… Dann dämmerte mir was: 099 gab 99.0, alles klar…
Anscheinend wurde erst getestet, ob es sich überhaupt um einen Integer handelt, aber wenn man dazu die normale parseInt-Methode oder so nimmt, werden Zahlen mit führender 0 als oktal interpretiert - und sobald eine Ziffer 8 oder 9 vorkommt, ist es natürlich keine valide Oktalzahl mehr. Interessanterweise muss der Algorithmus die eigentliche Umwandlung anders vornehmen, sonst wären ja aus 042 eine 34 geworden. Jedenfalls fallen die Zahlen mit 8en oder 9en durch, werden dann aber als valide Doubles erkannt, und dann so dargestellt.
In Java 9 wird bei einem unserer Services eine der statischen Variablen nicht rechtzeitig zugewiesen und bei Abruf stürzt das Programm mit einer Nullpointerexception ab. Mit Java 8 kein Problem.
Bugs empfand ich noch nie sonderlich witzig, eher nervig. Aber in diesem Fall ist es wohl witzig wenn
this.setVersionName( VERSION_NAME );
eine NullPointerException auslöst. Hat mich eine schlaflose Nacht gekostet.
Ich frag’ mich gerade, in welcher Sprache der Eröffnungs-Bug aufgetreten ist. So ein Murx kann doch eigentlich nur JavaScript sein?
Ansonsten … ja, was heißt „lustig“? Für Außenstehende (~„Andere machen Fehler aus Dummheit. Man selbst macht Fehler aus Versehen“) oder im Nachhinein? In diesem Sinne sind die „lustigsten“ Bugs wohl die, wo man nachher …
… (aber Landei möge mich korrigieren, falls ich mich irre). Da wird mir vielleicht auch noch der eine oder andere einfallen…
Es geht um Programmierfehler, egal in welcher Sprache. Ich weiß nicht, wie ihr es seht, aber wenn z.B. der Kontrollfluss in einen leeren Block mit dem Kommentar “can’t happen” landet oder so, finde ich das witzig.
Schon ewig her. Ich war noch am Anfang meiner Entwicklungszeit und neu in der Technologie (EJB 2). Da habe ich auch eine Exception behandelt (weil die API dies erforderte) und ins Log geschrieben “this failure is not ok”.
Eigentlich wollte ich dies später behandeln. Unittests waren noch nicht so mein Bereich und auch schwer mit EJB 2.x. Ticket habe ich für diesen Punkt natürlich nicht aufgenommen. Nach einem halben Jahr war ich schon lange in einem anderen Projekt und Kunden als ich einen Anruf erhielt, ob ich mit der Nachricht - die häufig im Log vorkommt - etwas anfangen könnte.
Kundenprojekt in einer Bank. Echte “Menschen” werden als natürliche Person geführt, Firmen als juristische Person. Das System in das die Einträge kommen kann unterscheiden, beide Typen erben aber von der selben Basisklasse. Wir binden einen neuen Service an um eine Firma zu speichern. Gründungsdatum letztes Jahr. Die Fehlermeldung: “Person must be of legal age”. Unsere Firma war nicht volljährig.