AdoptOpenJDK/jitwatch

Parse Errors on MetaMember

marschall opened this issue · 8 comments

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

Hi @marschall I believe this is related to #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.

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

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

Duplicate of #282

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

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.

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'.

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