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

Reply via email to