AdoptOpenJDK / jitwatch

Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.
Other
3.04k stars 435 forks source link

exception #241

Closed pdeva closed 7 years ago

pdeva commented 7 years ago

Happens on latest version of jitwatch. Running using gradlew run on windows 10 java 8

14:34:35.425 [JavaFX Application Thread] ERROR o.a.j.m.b.BytecodeAnnotationBuilder - Error building bytecode annotations
org.adoptopenjdk.jitwatch.model.LogParseException: Could not parse annotations
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.visitTagParse(BytecodeAnnotationBuilder.java:185) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.visitTag(BytecodeAnnotationBuilder.java:156) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.journal.JournalUtil.visitParseTagsOfLastTask(JournalUtil.java:81) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.buildParseTagAnnotations(BytecodeAnnotationBuilder.java:135) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.buildBytecodeAnnotations(BytecodeAnnotationBuilder.java:109) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.ui.triview.bytecode.ViewerBytecode.setContent(ViewerBytecode.java:136) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.triview.TriView.setMember(TriView.java:596) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.triview.TriView.setMember(TriView.java:537) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.JITWatchUI.openTriView(JITWatchUI.java:702) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.ClassMemberList$6.handle(ClassMemberList.java:188) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.ClassMemberList$6.handle(ClassMemberList.java:184) [main/:na]
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) [jfxrt.jar:na]
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) [jfxrt.jar:na]
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) [jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.EventUeEventImpl(EventUtil.java:74) [jfxrt.jar:na]
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) [jfxrt.jar:na]
        at javafx.event.Event.fireEvent(Event.java:198) [jfxrt.jar:na]
        at javafx.scene.control.MenuItem.fire(MenuItem.java:462) [jfxrt.jar:na]
        at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405) [jfxrt.jar:na]
        at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$343(ContextMenuContent.java:1358) [jfxrt.jar:na]
        at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) ~[jfxrt.jar:na]
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) [jfxrt.jar:na]
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) [jfxrt.jar:na]
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) [jfxrt.jar:na]
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) ~[jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.il.fireEventImpl(EventUtil.java:74) [jfxrt.jar:na]
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) [jfxrt.jar:na]
        at javafx.event.Event.fireEvent(Event.java:198) [jfxrt.jar:na]
        at javafx.scene.Scene$MouseHandler.process(Scene.java:3757) ~[jfxrt.jar:na]
        at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485) ~[jfxrt.jar:na]
        at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762) ~[jfxrt.jar:na]
        at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494) ~[jfxrt.jar:na]
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:352) ~[jfxrt.jar:na]
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275) ~[jfxrt.jar:na]
        at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_65]
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$355(GlassViewEventHandler.java:388) ~[jfxrt.jar:na]
        at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) ~[jfxrt.jar:na]
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387) ~[jfxrt.jar:na]
        at com.sun.glass.ui.View.handleMouseEvent(View.java:555) ~[jfxrt.jar:na]
        at com.sun.glass.ui.View.notifyMouse(View.java:937) ~[jfxrt.jar:na]
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) ~[jfxrt.jar:na]
        at com.sun.glass.ui.win.WinApplication.lambda$null$149(WinApplication.java:191) ~[jfxrt.jar:na]
        at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_65]
Caused by: org.adoptopenjdk.jitwatch.model.AnnotationException: Expected a branch instruction (BRANCH) at offset: 70 but was mnemonic: aload_1
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.buildParseTagAnnotations(BytecodeAnnotationBuilder.java:478) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.visitTagParse(BytecodeAnnotationBuilder.java:181) ~[core.jar:na]
        ... 52 common frittedom
14:34:35.428 [JavaFX Application Thread] ERROR o.a.j.m.b.BytecodeAnnotationBuilder - Cause
org.adoptopenjdk.jitwatch.model.AnnotationException: Expected a branch instruction (BRANCH) at offset: 70 but was mnemonic: aload_1
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.buildParseTagAnnotations(BytecodeAnnotationBuilder.java:478) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.visitTagParse(BytecodeAnnotationBuilder.java:181) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.visitTag(BytecodeAnnotationBuilder.java:156) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.journal.JournalUtil.visitParseTagsOfLastTask(JournalUtil.java:81) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.buildParseTagAnnotations(BytecodeAnnotationBuilder.java:135) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.model.bytecode.BytecodeAnnotationBuilder.buildBytecodeAnnotations(BytecodeAnnotationBuilder.java:109) ~[core.jar:na]
        at org.adoptopenjdk.jitwatch.ui.triview.bytecode.ViewerBytecode.setContent(ViewerBytecode.java:136) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.triview.TriView.setMember(TriView.java:596) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.triview.TriView.setMember(TriView.java:537) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.JITWatchUI.openTriView(JITWatchUI.java:702) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.ClassMemberList$6.handle(ClassMemberList.java:188) [main/:na]
        at org.adoptopenjdk.jitwatch.ui.ClassMemberList$6.handle(ClassMemberList.java:184) [main/:na]
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) [jfxrt.jar:na]
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) [jfxrt.jar:na]
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) [jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventher.java:58) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) [jfxrt.jar:na]
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) [jfxrt.jar:na]
        at javafx.event.Event.fireEvent(Event.java:198) [jfxrt.jar:na]
        at javafx.scene.control.MenuItem.fire(MenuItem.java:462) [jfxrt.jar:na]
        at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405) [jfxrt.jar:na]
        at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$343(ContextMenuContent.java:1358) [jfxrt.jar:na]
        at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) ~[jfxrt.jar:na]
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) [jfxrt.jar:na]
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) [jfxrt.jar:na]
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) [jfxrt.jar:na]
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) ~[jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Basiispatcher.java:56) [jfxrt.jar:na]
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) [jfxrt.jar:na]
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) [jfxrt.jar:na]
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) [jfxrt.jar:na]
        at javafx.event.Event.fireEvent(Event.java:198) [jfxrt.jar:na]
        at javafx.scene.Scene$MouseHandler.process(Scene.java:3757) ~[jfxrt.jar:na]
        at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485) ~[jfxrt.jar:na]
        at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762) ~[jfxrt.jar:na]
        at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494) ~[jfxrt.jar:na]
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:352) ~[jfxrt.jar:na]
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275) ~[jfxrt.jar:na]
        at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_65]
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$355(GlassViewEventHandler.java:388) ~[jfxrt.jar:na]
        at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) ~[jfxrt.jar:na]
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387) ~[jfxrt.jar:na]
        at com.sun.glass.ui.View.handleMouseEvent(View.java:555) ~[jfxrt.jar:na]
        at com.sun.glass.ui.View.notifyMouse(View.java:937) ~[jfxrt.jar:na]
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) ~[jfxrt.jar:na]
        at com.sun.glass.ui.win.WinApplication.lambda$null$149(WinApplication.java:191) ~[jfxrt.jar:na]
        at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_65]
chriswhocodes commented 7 years ago

Can you post the HotSpot log please?

This error is displayed when a sanity check that a referenced bytecode instruction is of the correct type (in this case expected to find a branch referenced in a branch-taken LogCompilation statement).

Usual cause for this is mounting different class files in JITWatch to those that were present when the HotSpot log was generated.

If you could show me the output of javap -v on the class that was in the TriView I can compare against the LogCompilation.

pdeva commented 7 years ago

The log is the same one i posted here: https://github.com/AdoptOpenJDK/jitwatch/issues/240

The class file i was examining was of this src: https://github.com/DataSketches/sketches-misc/blob/5f31118a2a3bebc6f579a3958dab68ee848090f8/src/main/java/com/yahoo/sketches/memory/MemoryPerformance.java

To build it, check out this revision of the repo: https://github.com/DataSketches/sketches-misc/tree/5f31118a2a3bebc6f579a3958dab68ee848090f8

chriswhocodes commented 7 years ago

Hi, I've tracked down the cause behind these bytecode mismatch problems - there is a <late_inline> tag that can insert an additional <parse> tag in the parsing phase after the main inlining tree of a method. Once I handle that correctly I believe this issue will be resolved.

chriswhocodes commented 7 years ago

False positive bytecode-mismatches should be fixed by https://github.com/AdoptOpenJDK/jitwatch/commit/009569602adfb8271b2b6f04621d5a73bd51a50f. Please let me know if that fixes it for you.

chriswhocodes commented 7 years ago

Assuming this fixed it for you? Please file another issue if the problem remains. Thanks.