eclipse-openj9 / openj9

Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Other
3.28k stars 721 forks source link

serviceability_jvmti_j9_0_FAILED serviceability/jvmti/RedefineClasses/RedefineAddLambdaExpression.java UnsupportedOperationException: class redefinition failed: attempted to add a method #15989

Open JasonFengJ9 opened 2 years ago

JasonFengJ9 commented 2 years ago

Failure link

From an internal build(rhel9x86-rt2-1):

openjdk version "19" 2022-09-20
IBM Semeru Runtime Open Edition 19+36 (build 19+36)
Eclipse OpenJ9 VM 19+36 (build master-784820387, JRE 19 Linux amd64-64-Bit Compressed References 20220920_45 (JIT enabled, AOT enabled)
OpenJ9   - 784820387
OMR      - 24b511df5
JCL      - 4efd563f9c based on jdk-19+36)

Rerun in Grinder - Change TARGET to run only the failed test targets.

Optional info

Failure output (captured from console output)

[2022-09-25T07:43:03.014Z] variation: Mode150
[2022-09-25T07:43:03.014Z] JVM_OPTIONS:  -XX:+UseCompressedOops 

[2022-09-25T07:44:08.919Z] TEST: serviceability/jvmti/RedefineClasses/RedefineAddLambdaExpression.java

[2022-09-25T07:44:08.922Z] STDOUT:
[2022-09-25T07:44:08.922Z] Result = 15
[2022-09-25T07:44:08.922Z] STDERR:
[2022-09-25T07:44:08.922Z] JVMJ9VM007W Command-line option unrecognised: -Xlog:redefine+class*=trace
[2022-09-25T07:44:08.922Z] java.lang.UnsupportedOperationException: class redefinition failed: attempted to add a method
[2022-09-25T07:44:08.922Z]  at java.instrument/sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
[2022-09-25T07:44:08.922Z]  at java.instrument/sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:195)
[2022-09-25T07:44:08.922Z]  at RedefineClassHelper.redefineClass(RedefineClassHelper.java:61)
[2022-09-25T07:44:08.922Z]  at RedefineClassHelper.redefineClass(RedefineClassHelper.java:51)
[2022-09-25T07:44:08.922Z]  at RedefineAddLambdaExpression.main(RedefineAddLambdaExpression.java:74)
[2022-09-25T07:44:08.922Z]  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
[2022-09-25T07:44:08.922Z]  at java.base/java.lang.reflect.Method.invoke(Method.java:578)
[2022-09-25T07:44:08.922Z]  at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
[2022-09-25T07:44:08.922Z]  at java.base/java.lang.Thread.run(Thread.java:1573)
[2022-09-25T07:44:08.922Z] 
[2022-09-25T07:44:08.922Z] JavaTest Message: Test threw exception: java.lang.UnsupportedOperationException: class redefinition failed: attempted to add a method

[2022-09-25T07:48:25.964Z] serviceability_jvmti_j9_0_FAILED

Similar errors:

[2022-09-25T07:44:16.924Z] TEST: serviceability/jvmti/RedefineClasses/RedefineSubtractLambdaExpression.java

[2022-09-25T07:44:16.927Z] STDOUT:
[2022-09-25T07:44:16.927Z] Hello from class B's test_math method
[2022-09-25T07:44:16.927Z] Result = 15
[2022-09-25T07:44:16.927Z] STDERR:
[2022-09-25T07:44:16.927Z] JVMJ9VM007W Command-line option unrecognised: -Xlog:redefine+class*=trace
[2022-09-25T07:44:16.927Z] java.lang.UnsupportedOperationException: class redefinition failed: attempted to delete a method
[2022-09-25T07:44:16.927Z]  at java.instrument/sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
[2022-09-25T07:44:16.927Z]  at java.instrument/sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:195)
[2022-09-25T07:44:16.927Z]  at RedefineClassHelper.redefineClass(RedefineClassHelper.java:61)
[2022-09-25T07:44:16.927Z]  at RedefineClassHelper.redefineClass(RedefineClassHelper.java:51)
[2022-09-25T07:44:16.927Z]  at RedefineSubtractLambdaExpression.main(RedefineSubtractLambdaExpression.java:74)
[2022-09-25T07:44:16.927Z]  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
[2022-09-25T07:44:16.927Z]  at java.base/java.lang.reflect.Method.invoke(Method.java:578)
[2022-09-25T07:44:16.927Z]  at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
[2022-09-25T07:44:16.927Z]  at java.base/java.lang.Thread.run(Thread.java:1573)
[2022-09-25T07:44:16.927Z] 
[2022-09-25T07:44:22.781Z] TEST: serviceability/jvmti/RedefineClasses/TestAddDeleteMethods.java
[2022-09-25T07:44:22.786Z] STDOUT:
[2022-09-25T07:44:22.786Z] ## Test original class A
[2022-09-25T07:44:22.786Z]  OLD foo called
[2022-09-25T07:44:22.786Z]  OLD publicFoo called
[2022-09-25T07:44:22.786Z]  OLD finalFoo called
[2022-09-25T07:44:22.786Z]  OLD staticFoo called
[2022-09-25T07:44:22.786Z] 
[2022-09-25T07:44:22.786Z] ## Test with modified method bodies in class A; redefinition expected to pass: true
[2022-09-25T07:44:22.786Z]  NEW foo called
[2022-09-25T07:44:22.786Z]  NEW publicFoo called
[2022-09-25T07:44:22.786Z]  NEW finalFoo called
[2022-09-25T07:44:22.786Z]  NEW staticFoo called
[2022-09-25T07:44:22.786Z] 
[2022-09-25T07:44:22.786Z] ## Test delete method 'foo' in class A; redefinition expected to FAIL
[2022-09-25T07:44:22.786Z]  Got expected UOE: class redefinition failed: attempted to delete a method
[2022-09-25T07:44:22.786Z] 
[2022-09-25T07:44:22.786Z] ## Test delete method 'publicFoo' in class A; redefinition expected to FAIL
[2022-09-25T07:44:22.786Z]  Got expected UOE: class redefinition failed: attempted to delete a method
[2022-09-25T07:44:22.786Z] 
[2022-09-25T07:44:22.786Z] ## Test delete method 'finalFoo' in class A; redefinition expected to PASS
[2022-09-25T07:44:22.786Z] STDERR:
[2022-09-25T07:44:22.786Z] java.lang.RuntimeException: Failed, unexpected UOE: class redefinition failed: attempted to delete a method
[2022-09-25T07:44:22.786Z]  at TestAddDeleteMethods.test(TestAddDeleteMethods.java:170)
[2022-09-25T07:44:22.786Z]  at TestAddDeleteMethods.main(TestAddDeleteMethods.java:200)
[2022-09-25T07:44:22.786Z]  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
[2022-09-25T07:44:22.786Z]  at java.base/java.lang.reflect.Method.invoke(Method.java:578)
[2022-09-25T07:44:22.786Z]  at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
[2022-09-25T07:44:22.786Z]  at java.base/java.lang.Thread.run(Thread.java:1573)
JasonFengJ9 commented 2 years ago

Test JDK18 0.33 w/ Adoptium testimage

openjdk version "18.0.2" 2022-07-19
IBM Semeru Runtime Open Edition 18.0.2.0 (build 18.0.2+9)
Eclipse OpenJ9 VM 18.0.2.0 (build openj9-0.33.0, JRE 18 Mac OS X amd64-64-Bit Compressed References 20220804_38 (JIT enabled, AOT enabled)
OpenJ9   - 04a55b45b
OMR      - b58aa2708
JCL      - dff9c97e1c7 based on jdk-18.0.2+9)

===============================================
Running test serviceability_jvmti_j9_0 ...
===============================================

variation: Mode150
JVM_OPTIONS:  -XX:+UseCompressedOops 

--------------------------------------------------
TEST: serviceability/jvmti/RedefineClasses/RedefineAddLambdaExpression.java
TEST JDK: /Users/ivm/ive/semeru/jdk-18.0.2+9/Contents/Home

STDOUT:
Result = 15
STDERR:
JVMJ9VM007W Command-line option unrecognised: -Xlog:redefine+class*=trace
java.lang.UnsupportedOperationException: class redefinition failed: attempted to add a method
    at java.instrument/sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
    at java.instrument/sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:195)
    at RedefineClassHelper.redefineClass(RedefineClassHelper.java:61)
    at RedefineClassHelper.redefineClass(RedefineClassHelper.java:51)
    at RedefineAddLambdaExpression.main(RedefineAddLambdaExpression.java:74)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:577)
    at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
    at java.base/java.lang.Thread.run(Thread.java:858)

JavaTest Message: Test threw exception: java.lang.UnsupportedOperationException: class redefinition failed: attempted to add a method

--------------------------------------------------
TEST: serviceability/jvmti/RedefineClasses/RedefineSubtractLambdaExpression.java
TEST JDK: /Users/ivm/ive/semeru/jdk-18.0.2+9/Contents/Home

STDOUT:
Hello from class B's test_math method
Result = 15
STDERR:
JVMJ9VM007W Command-line option unrecognised: -Xlog:redefine+class*=trace
java.lang.UnsupportedOperationException: class redefinition failed: attempted to delete a method
    at java.instrument/sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
    at java.instrument/sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:195)
    at RedefineClassHelper.redefineClass(RedefineClassHelper.java:61)
    at RedefineClassHelper.redefineClass(RedefineClassHelper.java:51)
    at RedefineSubtractLambdaExpression.main(RedefineSubtractLambdaExpression.java:74)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:577)
    at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
    at java.base/java.lang.Thread.run(Thread.java:858)

JavaTest Message: Test threw exception: java.lang.UnsupportedOperationException: class redefinition failed: attempted to delete a method

--------------------------------------------------
TEST: serviceability/jvmti/RedefineClasses/TestAddDeleteMethods.java
TEST JDK: /Users/ivm/ive/semeru/jdk-18.0.2+9/Contents/Home

STDERR:
java.lang.RuntimeException: Failed, unexpected UOE: class redefinition failed: attempted to delete a method
    at TestAddDeleteMethods.test(TestAddDeleteMethods.java:170)
    at TestAddDeleteMethods.main(TestAddDeleteMethods.java:200)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:577)
    at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
    at java.base/java.lang.Thread.run(Thread.java:858)

JavaTest Message: Test threw exception: java.lang.RuntimeException: Failed, unexpected UOE: class redefinition failed: attempted to delete a method

serviceability_jvmti_j9_0_FAILED

This is not a regression introduced by JDK19.