Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parse Errors on MetaMember #323

Closed
marschall opened this issue Jun 30, 2020 · 8 comments
Closed

Parse Errors on MetaMember #323

marschall opened this issue Jun 30, 2020 · 8 comments

Comments

@marschall
Copy link

marschall commented Jun 30, 2020

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
Copy link
Member

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.

@marschall
Copy link
Author

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

@chriswhocodes
Copy link
Member

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

@marschall
Copy link
Author

Duplicate of #282

@chrisseaton
Copy link

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

@chriswhocodes
Copy link
Member

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
Copy link

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
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants