byte-buddy icon indicating copy to clipboard operation
byte-buddy copied to clipboard

[Agent] Allow applying advices to the native methods

Open bsideup opened this issue 6 years ago • 3 comments

Unlike in Open J9, Hotspot was allowing to instrument native methods (including the JVM's) by renaming + marking private/final until Java 13.

Here is an example ASM code in BlockHound: https://github.com/reactor/BlockHound/blob/312fc5f30370640f69b3c1d6659f1e9eabf32738/agent/src/main/java/reactor/blockhound/NativeWrappingClassFileTransformer.java#L96

We run it before ByteBuddy, so that ByteBuddy sees the methods as non-native and applies advices to them. It also forces us to customize the DescriptionStrategy (see #713) which isn't great for performance.

It would be nice tho if this functionality is added directly to ByteBuddy, so that we can avoid running ASM code before BB.

I understand that it does not work on Open J9, plus requires -XX:+AllowRedefinitionToAddDeleteMethods flag on Hotspot 13+, so it can be an optional mode. Yet, given that the majority of Java versions are distributed between 6-8, this mode will remain helpful for at least a few years :)

bsideup avatar Aug 29 '19 13:08 bsideup

This would indeed be a valuable addition but I will need to see how easily I can fit it in. I do not think this will become a high priority issue, especially as the value decreases over time but I will definetly have a look!

raphw avatar Aug 30 '19 20:08 raphw

hi @raphw, I have just stumbled upon the same problem in my project. Do you think this functionality will be added in some foreseeable future?

alexey-anufriev avatar May 11 '23 10:05 alexey-anufriev

I did not yet have time to prioritize this, unfortunately.

raphw avatar May 13 '23 09:05 raphw