From martinrb at google.com Fri May 10 16:51:44 2013 From: martinrb at google.com (Martin Buchholz) Date: Fri, 10 May 2013 16:51:44 -0700 Subject: Infloop in javac on invalid source Message-ID: Hi javac folk! This is a bug report for a serious bug: an infinite loop in javac that appears to have been introduced into jdk7 (also repro'd in dk8) relatively recently, as discovered by my colleague Raluca. She suspects this commit: http://hg.openjdk.java.net/jdk7u/jdk7u/langtools/rev/4baab658f357 #!/bin/bash set -eu mkdir -p /tmp/t9/baz cd /tmp/t9 cat > A.java <<'EOF' import java.util.Map; import java.util.Set; import baz.Baz; public class A { private static class Foo extends Bar { @Override void run() {} } private static class Bar extends Baz { @Override void run() { } } } EOF cat > baz/Baz.java <<'EOF' package baz; import java.util.Map; public class Baz { void run() { } } EOF javac baz/Baz.java jar cvf libbaz.jar baz/Baz.class javac -cp libbaz.jar A.java From jonathan.gibbons at oracle.com Sat May 11 10:15:48 2013 From: jonathan.gibbons at oracle.com (Jonathan Gibbons) Date: Sat, 11 May 2013 10:15:48 -0700 Subject: Infloop in javac on invalid source In-Reply-To: References: Message-ID: <518E7CC4.9010807@oracle.com> Martin, Thank you. I have filed JDK-8014380 to track this issue. -- Jon On 05/10/2013 04:51 PM, Martin Buchholz wrote: > Hi javac folk! > > This is a bug report for a serious bug: an infinite loop in javac that > appears to have been introduced into jdk7 (also repro'd in dk8) > relatively recently, as discovered by my colleague Raluca. She > suspects this commit: > > http://hg.openjdk.java.net/jdk7u/jdk7u/langtools/rev/4baab658f357 > > #!/bin/bash > set -eu > > mkdir -p /tmp/t9/baz > cd /tmp/t9 > > cat > A.java <<'EOF' > import java.util.Map; > import java.util.Set; > import baz.Baz; > public class A { > private static class Foo extends > Bar { > @Override void run() {} > } > private static class Bar extends > Baz { > @Override void run() { } > } > } > EOF > > cat > baz/Baz.java <<'EOF' > package baz; > import java.util.Map; > public class Baz { > void run() { } > } > EOF > > javac baz/Baz.java > jar cvf libbaz.jar baz/Baz.class > javac -cp libbaz.jar A.java >