Ich bin auf eine interessante Situation gestoßen. Ein Kollege hat einige Änderungen vorgenommen, die auf meiner Maschine weder von der IDE (Eclipse) noch von einer Kommandozeile (Maven) kompiliert werden. Das Problem, das sich im Kompilierungsprozess manifestiert, der 100% CPU verbraucht und nur den Prozess zunichte macht, würde helfen, es zu stoppen. Nach einer gewissen Analyse wurde die Ursache des Problems lokalisiert und behoben. Es stellte sich heraus, dass eine Zeile "double d = 2.2250738585072012e-308" (ohne Semikolon am Ende) in einer der Schnittstellen war. Der folgende Ausschnitt dupliziert es.
%Vor%Warum würde der Compiler hängen? Ein Sprachkantenfall?
Es ist ein Fehler im String-to-Double-Konvertierungsalgorithmus der JVM: Ссылка
Sie können den gleichen Hang erhalten, wenn Sie versuchen, diese Zeichenfolge zur Laufzeit zu analysieren. Der Compiler hängt, weil er denselben Code verwendet (es ist immerhin ein Java-Programm).
Update: Das Problem hat jetzt eine CVE -Kennung ( CVE-2010-4476 ) und ein Patch (für Oracle JVMs, funktioniert auch auf OpenJDK).
Laut dem Patch läuft alles darauf hinaus ein Fehler nach dem anderen.
Dies ist ein bekanntes Problem, das vor ein paar Tagen in den Nachrichten war. Weitere Informationen hier .
Dies ist ein offener Fehler seit über 10 Jahren. Schlechte Sonne.
Die Tatsache, dass Java-Systeme nicht in Massen angegriffen und getötet wurden, beweist, dass es wirklich sehr wenige unartige Menschen auf der Erde gibt.
Tags und Links compilation java javac