Compiler crash with -parameters - need help to open a bug

Boaz Nahum boaznahum at gmail.com
Thu Mar 27 12:01:23 UTC 2014


Hi.

Please accept my apologies.

I was in process of send you the isolate project the re-produce the bug, I
wrote an ANT file, but when I try to compile it I was unable to reproduce
the bug.
So after  long investigation I found that the problem is not in javac but
with "jetbrains @NotNull" byte instrumentation - which produce the wrong
.class
http://youtrack.jetbrains.com/issue/IDEA-123001


Please accept my apologies for wasting everyone time.

Boaz




On Wed, Mar 26, 2014 at 12:59 AM, Eric McCorkle <eric.mccorkle at oracle.com>wrote:

> Coming in a bit late here, see replies inline.
>
> On 03/25/14 12:03, Boaz Nahum wrote:
> > Hi.
> >
> >
> > First, with your help, I managed to isolate some piece of code that
> > reproduce similar crash ( By 'isolate' I mean 45 files that I can send
> > you out of 80K).
> >
> > ('Similar' means 'Information:java: java.lang.ClassCastException:
> > com.sun.tools.javac.jvm.ClassFile$NameAndType cannot be cast to
> > com.sun.tools.javac.util.Name <http://com.sun.tools.javac.util.Name>' )
>
> My intuition, based on what I've seen earlier in the thread, is that
> there's a problem with javac reading method parameter data back out of a
> class file.  That is why you are seeing it only on source that depends
> on something compiled with -parameters.  The problem isn't with the
> source you're compiling; it's with the class files that get read.
>
> >
> > But now the crash only with 1.8.0u20 but not with
> > http://hg.openjdk.java.net/jdk8/tl/
>
> That is strange.  I'm not aware that parameter reflection has been
> changed in 8u20 yet.
>
> > On the other hand, in our huge project it happens also with
> > http://hg.openjdk.java.net/jdk8/tl/
> >
> > So I guess I didn't isolated it completely.
> >
> > Second. this crash happens only if 'annotation processor' is involved.
>
> That is helpful, though I'm not sure what it means offhand.
>
> > So, I don't know if it worth the effort to send you the files (and short
> > description how to build them) ?
> >
> > Thanks
> > Boaz
> >
> >
> >
> > On Mon, Mar 24, 2014 at 9:54 PM, Vicente-Arturo Romero-Zaldivar
> > <vicente.romero at oracle.com <mailto:vicente.romero at oracle.com>> wrote:
> >
> >     On 24/03/14 19:41, Boaz Nahum wrote:
> >>
> >>     Of curse you can ( why not mention my name :) ? )
> >>
> >
> >     :) just in case you didn't want but I have no problem with adding
> >     your name and / or mail
> >
> >
> >>     Anyway, do you already know what the bug is ? Can you share the
> >>     bug ID with me ?
> >>
> >
> >     I haven't created it yet but I will send you the id once I have it.
> >
> >
> >>     I will try to isolate the code and send it to you.
> >>
> >
> >     Thanks,
> >     Vicente
> >
> >
> >>     The
> >>     Boaz
> >>
> >>     On Mar 24, 2014 9:34 PM, "Vicente-Arturo Romero-Zaldivar"
> >>     <vicente.romero at oracle.com <mailto:vicente.romero at oracle.com>>
> wrote:
> >>
> >>         Thanks Boaz,
> >>
> >>         I will add all this info in a bug report. Can I use this test
> >>         case to write a mail, probably a blog in the future, about
> >>         obtaining extra information from hard bugs? I won't mention
> >>         your name. My idea is to write some info that may help other
> >>         users to provide more information associated to a crash or bug.
> >>
> >>         Thanks,
> >>         Vicente
> >>
> >>         On 24/03/14 17:31, Boaz Nahum wrote:
> >>>         Comment out
> >>>          //@NotNull
> >>>             //public static <T> T createSingleton(final Class<?
> >>>         extends DIGlobalCxPDD<Void, T, Void>> dd) {
> >>>             //
> >>>             //    return Singletons.createNonNull(dd, new
> >>>         Factory0Adapter<T>() {
> >>>             //        @Override
> >>>             //        public T get() {
> >>>             //            return createWithContext(dd, null, null);
> >>>             //        }
> >>>             //    });
> >>>             //}
> >>>
> >>>
> ---------------------------------------------------------------------
> >>>         Brings a new exception:
> >>>
> >>>
> >>>
> >>>         ********************* error in file
> >>>
> F:\views2\BoazMainWF_JDK8_LANG_ON_p\Qsnap\Qrelease\Jar\Core.jar(wf/core/util/factory/di/glob
> >>>         al/DIFW.class)
> >>>         ********************* while trying to read constant pool entry
> 72
> >>>
> >>>            #70 = Utf8               all
> >>>            #71 = Utf8
> >>>         Ljava/util/List<+Lwf/core/util/factory/Factory<+TT;-TP;>;>;
> >>>            #72 = Utf8               Ljava/util/List;
> >>>            #73 = Utf8               get0
> >>>            #74 = Utf8
> >>>         (Ljava/lang/Class;)Lwf/core/util/factory/Factory0;
> >>>
> >>>         Comment out:
> >>>
> >>>                 //List<? extends Factory<? extends T, ? super P>> all
> >>>         = DIFWImp.getAll(dd, context);
> >>>
> >>>                 //noinspection unchecked
> >>>                 return null;//(List<Factory<T, P>>)all;
> >>>
> >>>
> ---------------------------------------------------------------------
> >>>
> >>>         Brings a new exception:
> >>>
> >>>         ********************* while trying to read constant pool
> >>>         entry 162
> >>>
> >>>           #161 = Utf8
> >>>
> Ljava/lang/Class<+Lwf/core/util/factory/di/core/DIAbstractDD<-Ljava/lang/Void;+TT;-TP;>;>;
> >>>           #162 = Utf8               wf/core/util/packing/Params2
> >>>           #163 = Class              #162          //
> >>>         wf/core/util/packing/Params2
> >>>           #164 = Utf8
> >>>
> (Ljava/lang/Object;Ljava/lang/Object;)Lwf/core/util/packing/Params2;
> >>>           #165 = NameAndType        #34:#164      //
> >>>
> create:(Ljava/lang/Object;Ljava/lang/Object;)Lwf/core/util/packing/Params2;
> >>>           #166 = Methodref          #163.#165     //
> >>>
> wf/core/util/packing/Params2.create:(Ljava/lang/Object;Ljava/lang/Object;)Lwf/core/util/packing/Params2;
> >>>           #167 = Utf8
> >>>
> Ljava/lang/Class<+Lwf/core/util/factory/di/factory/DIGlobalCxPDD<Ljava/lang/Void;TT;Lwf/core/util/packing/Params2<TP1;TP2;>;>;>;
> >>>
> >>>
> >>>
> >>>         Thx
> >>>         Boaz
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>         On Mon, Mar 24, 2014 at 6:40 PM, Boaz Nahum
> >>>         <boaznahum at gmail.com <mailto:boaznahum at gmail.com>> wrote:
> >>>
> >>>             Thx
> >>>
> >>>             ********************* error in file
> >>>
> F:\views2\BoazMainWF_JDK8_LANG_ON_p\Qsnap\Qrelease\Jar\Core.jar(wf/core/util/factory/di/glob
> >>>             al/DIFW.class)
> >>>               ********************* while trying to read constant
> >>>             pool entry 64
> >>>
> >>>             Attachedfiles DIFW{.java, .class,$*.class}
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>             On Mon, Mar 24, 2014 at 3:52 PM, Vicente-Arturo
> >>>             Romero-Zaldivar <vicente.romero at oracle.com
> >>>             <mailto:vicente.romero at oracle.com>> wrote:
> >>>
> >>>                 On 24/03/14 13:50, Boaz Nahum wrote:
> >>>>                 is repo http://hg.openjdk.java.net/jdk8/jdk8 is good
> >>>>                 enough, or maybe other
> >>>
> >>>                 Please use this one:
> http://hg.openjdk.java.net/jdk8/tl/
> >>>
> >>>
> >>>>
> >>>>
> >>>>                 On Mon, Mar 24, 2014 at 3:45 PM, Vicente-Arturo
> >>>>                 Romero-Zaldivar <vicente.romero at oracle.com
> >>>>                 <mailto:vicente.romero at oracle.com>> wrote:
> >>>>
> >>>>                     I usually do this with Linux, if you have Linux
> >>>>                     you can go to your jdk repo, to the langtools
> >>>>                     folder and do:
> >>>>
> >>>>                     patch -p1 < /path/to/mypatch
> >>>>
> >>>>                     after that you can rebuild again the jdk and you
> >>>>                     will have the patched javac.
> >>>>
> >>>>                     Vicente
> >>>>
> >>>>
> >>>>                     On 24/03/14 13:41, Boaz Nahum wrote:
> >>>>>                     Please send my link to instruction how to apply
> >>>>>                     pathc (I know how to compile JDK, never before
> >>>>>                     applied a patch)
> >>>>>
> >>>>>
> >>>>>                     On Mon, Mar 24, 2014 at 3:34 PM, Vicente-Arturo
> >>>>>                     Romero-Zaldivar <vicente.romero at oracle.com
> >>>>>                     <mailto:vicente.romero at oracle.com>> wrote:
> >>>>>
> >>>>>                         Hi Boaz,
> >>>>>
> >>>>>                         Please try the attached patch and send me
> >>>>>                         the obtained information along with the
> >>>>>                         failing .class file.
> >>>>>
> >>>>>                         Thanks,
> >>>>>                         Vicente
> >>>>>
> >>>>>
> >>>>>                         On 24/03/14 13:07, Boaz Nahum wrote:
> >>>>>>                         It happens both with 1.8.0_20-ea and
> >>>>>>                         1.8.0-b132
> >>>>>>
> >>>>>>                         The javac (with -verbose) output
> >>>>>>
> https://drive.google.com/file/d/0B4MyZ6FK5jswZVZWV0VMSnE3c0k/edit?usp=sharing
> >>>>>>
> >>>>>>                         I didn't tired with
> >>>>>>
> http://hg.openjdk.java.net/jdk9/dev/langtools/
> >>>>>>                         I need to re-setup by jdk build environment
> >>>>>>
> >>>>>>
> >>>>>>                         many thanks
> >>>>>>                         Boaz
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>                         On Mon, Mar 24, 2014 at 1:24 PM,
> >>>>>>                         Vicente-Arturo Romero-Zaldivar
> >>>>>>                         <vicente.romero at oracle.com
> >>>>>>                         <mailto:vicente.romero at oracle.com>> wrote:
> >>>>>>
> >>>>>>                             Hi Boaz,
> >>>>>>
> >>>>>>                             OK it seems like we both need more
> >>>>>>                             information :)
> >>>>>>
> >>>>>>                             What version of javac is this? Can you
> >>>>>>                             get the last javac from
> >>>>>>
> http://hg.openjdk.java.net/jdk9/dev/langtools/
> >>>>>>                             and try to reproduce the issue? Do you
> >>>>>>                             get any meaningful information after
> >>>>>>                             executing javac with plain "-verbose"
> >>>>>>                             option?
> >>>>>>
> >>>>>>                             Thanks,
> >>>>>>                             Vicente
> >>>>>>
> >>>>>>
> >>>>>>                             On 24/03/14 07:10, Boaz Nahum wrote:
> >>>>>>>
> >>>>>>>                             That what I'm asking help for - to
> >>>>>>>                             isolate  the problematic source.
> >>>>>>>                             But from what I learnt - it is
> >>>>>>>                             combination of source and
> >>>>>>>                             dependencies. The same source
> >>>>>>>                             ***passed*** if it is complied with a
> >>>>>>>                             dependency that wasn't compile with
> >>>>>>>                             "-parameters".
> >>>>>>>                             What I need is a flag (or a patch)
> >>>>>>>                             that causes the compiler to emit
> >>>>>>>                             verbose information
> >>>>>>>
> >>>>>>>                             Thanks
> >>>>>>>                             Boaz
> >>>>>>>
> >>>>>>>                             On Mar 23, 2014 9:18 PM,
> >>>>>>>                             "Vicente-Arturo Romero-Zaldivar"
> >>>>>>>                             <vicente.romero at oracle.com
> >>>>>>>                             <mailto:vicente.romero at oracle.com>>
> >>>>>>>                             wrote:
> >>>>>>>
> >>>>>>>                                 Hi Boaz,
> >>>>>>>
> >>>>>>>                                 Do you have an isolated test case?
> >>>>>>>
> >>>>>>>                                 Thanks,
> >>>>>>>                                 Vicente
> >>>>>>>
> >>>>>>>                                 On 23/03/14 12:40, Boaz Nahum
> wrote:
> >>>>>>>>                                 Actaully
> >>>>>>>>                                 '-XDverboseCompilePolicy and
> >>>>>>>>                                 -Xdiags:verbose' are not
> >>>>>>>>                                 ignored, it is just that the
> >>>>>>>>                                 exception occurs too early. If I
> >>>>>>>>                                 remove '-parameters' then they
> >>>>>>>>                                 do the work ....
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>                                 On Sun, Mar 23, 2014 at 2:29 PM,
> >>>>>>>>                                 Boaz Nahum <boaznahum at gmail.com
> >>>>>>>>                                 <mailto:boaznahum at gmail.com>>
> wrote:
> >>>>>>>>
> >>>>>>>>                                     When compiling our code with
> >>>>>>>>                                     '-parameters' (1.8.0_20-ea
> >>>>>>>>                                     and  1.8.0-b132), we got
> >>>>>>>>                                     this exception:
> >>>>>>>>
> >>>>>>>>                                     An exception has occurred in
> >>>>>>>>                                     the compiler (1.8.0). Please
> >>>>>>>>                                     file a bug at the Java
> >>>>>>>>                                     Developer/bugreport)  after
> >>>>>>>>                                     checking the Bug Parade for
> >>>>>>>>                                     duplicates. Include your
> >>>>>>>>                                     program and the following
> >>>>>>>>                                     diagnostic in your report.
> >>>>>>>>                                     Thank you.
> >>>>>>>>
> >>>>>>>>                                     java.lang.ClassCastException:
> java.lang.String
> >>>>>>>>                                     cannot be cast to
> >>>>>>>>                                     com.sun.tools.javac.util.Name<
> http://com.sun.tools.javac.util.Name>
> >>>>>>>>                                            at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.readName(ClassReader.java:602)
> >>>>>>>>                                            at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.setParameterNames(ClassReader.java:2130)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.readMethod(ClassReader.java:2031)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.readClass(ClassReader.java:2234)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.readClassFile(ClassReader.java:2306)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2493)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:2424)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.access$000(ClassReader.java:76)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader$1.complete(ClassReader.java:244)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.code.Symbol.complete(Symbol.java:560)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1024)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.jvm.ClassReader.loadClass(ClassReader.java:2605)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Resolve.loadClass(Resolve.java:1868)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Resolve.findIdentInPackage(Resolve.java:2107)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Attr.selectSym(Attr.java:3358)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3257)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1891)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Attr.attribType(Attr.java:658)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Attr.attribType(Attr.java:651)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.MemberEnter.attribImportType(MemberEnter.java:836)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.MemberEnter.visitImport(MemberEnter.java:556)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.tree.JCTree$JCImport.accept(JCTree.java:571)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:435)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:447)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.MemberEnter.visitTopLevel(MemberEnter.java:526)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:518)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:435)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.MemberEnter.complete(MemberEnter.java:1038)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.code.Symbol.complete(Symbol.java:560)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1024)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Enter.complete(Enter.java:497)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.comp.Enter.main(Enter.java:475)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:985)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.main.Main.compile(Main.java:523)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.main.Main.compile(Main.java:381)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.main.Main.compile(Main.java:370)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.main.Main.compile(Main.java:361)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.Main.compile(Main.java:56)
> >>>>>>>>                                             at
> >>>>>>>>
> com.sun.tools.javac.Main.main(Main.java:42)
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>                                     Thanks
> >>>>>>>>                                     Boaz
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>                                     In order to isolate the
> >>>>>>>>                                     problematic code, I add
> >>>>>>>>                                     -XDverboseCompilePolicy and
> >>>>>>>>                                     -Xdiags:verbose, without luck.
> >>>>>>>>                                     Why they are ignored ?
> >>>>>>>>
> >>>>>>>>                                     Please note that an
> >>>>>>>>                                     annotation processor is
> >>>>>>>>                                     involved.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20140327/ad2a88c0/attachment-0001.html>


More information about the compiler-dev mailing list