RFR(XXS): 8214161: java.lang.IllegalAccessError: class jdk.internal.event.X509CertificateEvent (in module java.base) cannot access class jdk.jfr.internal.handlers.EventHandler (in module jdk.jfr) because module java.base does not read module jdk.jfr

David Holmes david.holmes at oracle.com
Thu Nov 22 22:27:14 UTC 2018


Hi Markus,

Thanks for the explanation of the problem.

Reviewed.

Thanks,
David

On 23/11/2018 1:01 am, Markus Gronlund wrote:
> Greetings,
> 
> Please review the following small fix.
> 
> Bug: https://bugs.openjdk.java.net/browse/JDK-8214161
> Webrev: http://cr.openjdk.java.net/~mgronlun/8214161/webrev01/
> 
> diff -r 0a77b7e41322 -r cec1604a9b89 src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
> --- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp       Thu Nov 22 11:15:53 2018 +0100
> +++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp       Thu Nov 22 15:18:50 2018 +0100
> @@ -447,6 +447,7 @@
>     if (registered_symbol == NULL) {
>       registered_symbol = SymbolTable::lookup_only(registered_constant, sizeof registered_constant - 1, unused_hash);
>       if (registered_symbol == NULL) {
> +      untypedEventHandler = true;
>         return false;
>       }
>     }
> 
> Description:
> 
> Events in module java.base can't refer to types in module "jdk.jfr" before the jdk.jfr module is loaded and valid read edges established.
> Unfortunately, there exist an uncovered exit path in the code that leaves the eventHandler field "jdk.jfr"-typed, when it should not be.
> 
> Javap output:
> 
> Existing:
> public final class jdk.internal.event.X509CertificateEvent extends jdk.internal.event.Event
> ...
>    private static jdk.jfr.internal.handlers.EventHandler eventHandler;
>      descriptor: Ljdk/jfr/internal/handlers/EventHandler;
>      flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
> 
> Fix:
> public final class jdk.internal.event.X509CertificateEvent extends jdk.internal.event.Event
> ...
>    private static java.lang.Object eventHandler;
>      descriptor: Ljava/lang/Object;
>      flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
> 
> Tests: open/test/jdk/:jdk_jfr
> 
> Thanks
> Markus
> 


More information about the core-libs-dev mailing list