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

Vicente-Arturo Romero-Zaldivar vicente.romero at oracle.com
Thu Mar 27 13:49:11 UTC 2014


Hi Boaz,

Don't worry this is part of the process. Thanks for the update and for 
your interest. I will close the bug. Please let us know if you find any 
other issue.

Thanks,
Vicente

On 27/03/14 12:01, Boaz Nahum wrote:
> 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 <mailto: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>
>     <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>
>     <mailto: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>
>     <mailto: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>
>     <mailto: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>
>     >>>             <mailto: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>
>     >>>>                 <mailto: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>
>     >>>>> <mailto: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>
>     >>>>>>       <mailto: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>
>     >>>>>>> <mailto: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>
>     >>>>>>>>                   <mailto: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>
>     <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/ed746239/attachment-0001.html>


More information about the compiler-dev mailing list