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.08k stars 438 forks source link

Parse Errors on MetaMember #323

Closed marschall closed 4 years ago

marschall commented 4 years ago

The attached file was generated with JDK 11 and generated the following parse errors. Jitwatch is built from the current master branch:

Could not parse line 33060 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V
Could not parse line 33509 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V
Could not parse line 34372 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 34373 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
Could not parse line 34376 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 34574 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 34575 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
Could not parse line 34577 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V
Could not parse line 34580 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
Could not parse line 34746 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
Could not parse line 35161 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 35358 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V
Could not parse line 41020 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 41022 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 41311 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 41313 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 48056 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 run ()V
Could not parse line 48289 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 48344 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
Could not parse line 48399 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 <init> (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)V
Could not parse line 48529 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 48587 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 run ()V
Could not parse line 51117 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$2.0x0000000100066840 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;
Could not parse line 51176 : com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable; : MetaMember not found for com.github.marschall.memorymodeldemo.SynchronisedSum$$Lambda$3.0x0000000100066c40 get$Lambda (Lcom.github.marschall.memorymodeldemo.SynchronisedSum;)Ljava.lang.Runnable;

hotspot_pid212229.log

chriswhocodes commented 4 years ago

Hi @marschall I believe this is related to https://github.com/AdoptOpenJDK/jitwatch/issues/282

When I started JITWatch I didn't consider lambdas or other synthesised methods where the bytecode is not written to disk. I made an assumption that the class files would always be available at time of analysis.

The fix for this is a redesign of the JITWatch internal model so that methods whose bytecode is not present at analysis time can still be represented via their signatures in the LogCompilation report. Obviously the bytecode will not be available for display/analysis but the assembly and source should be so I think this is worth trying to fix.

marschall commented 4 years ago

Yeah, sounds like the same issue. Should I close as a duplicate?

chriswhocodes commented 4 years ago

Yes please. I will try and find some time to come up with a design for fixing this.

marschall commented 4 years ago

Duplicate of #282

chrisseaton commented 2 years ago

For my future reference, this error is also seen when you don't have the right classpath directory set in the configuration screen.

chriswhocodes commented 2 years ago

Hi @chrisseaton I've been working on a new class file library that will replace JITWatch's use of javap and make it much more robust in the case of missing classes. Once that's in place I will be making JITWatch support "skeleton" metaclass creation based on LogCompilation BCIs which will better support lambdas (no classfile available) and where the classes are not configured.

chrisseaton commented 2 years ago

Yeah but that's not quite what I mean - I mean if you don't have classes configured, even for normal methods, it doesn't say 'I couldn't find this class - maybe you need to add it to the configuration' it says 'MetaMember not found'.

chriswhocodes commented 2 years ago

Agreed, it's a bit cryptic. Will try and think of a non-intrusive way of presenting that.