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

JTReg Failure: java/lang/StackWalker/ReflectionFrames.java #6724

Closed
M-Davies opened this issue Aug 12, 2019 · 7 comments
Closed

JTReg Failure: java/lang/StackWalker/ReflectionFrames.java #6724

M-Davies opened this issue Aug 12, 2019 · 7 comments

Comments

@M-Davies
Copy link

Failure link

openjdk version "11.0.4" 2019-07-16
11:35:22  OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11-201908091810)
11:35:22  Eclipse OpenJ9 VM AdoptOpenJDK (build master-5dd23af84, JRE 11 Linux amd64-64-Bit Compressed References 20190809_303 (JIT enabled, AOT enabled)
11:35:22  OpenJ9   - 5dd23af84
11:35:22  OMR      - 6e99760b
11:35:22  JCL      - 965d0c0df3 based on jdk-11.0.4+11)

Summary

testConstructor() and testNewInstance()are the culprits of this issue. #L456 and #L252 are the assertEquals points of failure. It appears that there are more items in the stack than expected at runtime. The only significant difference between the tests at the start is how they implement StackInspector. Will investigate further to see if this is the case.

Failure output (captured from console output)

11:37:37  STDOUT:
11:37:37  [TestNG] Running:
11:37:37    java/lang/StackWalker/ReflectionFrames.java
11:37:37  
11:37:37  testConstructor: create
11:37:37      java.lang.StackWalker$StackFrameImpl@1507e9b1
11:37:37      java.lang.StackWalker$StackFrameImpl@6c2df9cf
11:37:37      java.lang.StackWalker$StackFrameImpl@94270930
11:37:37      java.lang.StackWalker$StackFrameImpl@955dd26e
11:37:37      java.lang.StackWalker$StackFrameImpl@519f289c
11:37:37      java.lang.StackWalker$StackFrameImpl@c20836b9
11:37:37      java.lang.StackWalker$StackFrameImpl@c94e56af
11:37:37  test ReflectionFrames.testConstructor(): failure
11:37:37  java.lang.AssertionError: lists don't have the same size expected [3] but found [7]
11:37:37  	at org.testng.Assert.fail(Assert.java:94)
11:37:37  	at org.testng.Assert.failNotEquals(Assert.java:496)
11:37:37  	at org.testng.Assert.assertEquals(Assert.java:125)
11:37:37  	at org.testng.Assert.assertEquals(Assert.java:372)
11:37:37  	at org.testng.Assert.assertEquals(Assert.java:539)
11:37:37  	at org.testng.Assert.assertEquals(Assert.java:516)
11:37:37  	at ReflectionFrames.testConstructor(ReflectionFrames.java:252)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:37:37  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:37:37  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
11:37:37  	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
11:37:37  	at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
11:37:37  	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
11:37:37  	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
11:37:37  	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
11:37:37  	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
11:37:37  	at org.testng.TestRunner.privateRun(TestRunner.java:773)
11:37:37  	at org.testng.TestRunner.run(TestRunner.java:623)
11:37:37  	at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
11:37:37  	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
11:37:37  	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
11:37:37  	at org.testng.SuiteRunner.run(SuiteRunner.java:259)
11:37:37  	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
11:37:37  	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
11:37:37  	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
11:37:37  	at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
11:37:37  	at org.testng.TestNG.run(TestNG.java:1018)
11:37:37  	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:94)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:37:37  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:37:37  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
11:37:37  	at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:298)
11:37:37  	at java.base/java.lang.Thread.run(Thread.java:831)
11:37:37  test ReflectionFrames.testGetCaller(): success
11:37:37  test ReflectionFrames.testHandleCaller(): success
11:37:37  testNewInstance: create
11:37:37      java.lang.StackWalker$StackFrameImpl@b4c5d93
11:37:37      java.lang.StackWalker$StackFrameImpl@2248b817
11:37:37      java.lang.StackWalker$StackFrameImpl@d8433b72
11:37:37      java.lang.StackWalker$StackFrameImpl@42ea6ed6
11:37:37      java.lang.StackWalker$StackFrameImpl@a96999da
11:37:37  test ReflectionFrames.testNewInstance(): failure
11:37:37  java.lang.AssertionError: lists don't have the same size expected [4] but found [5]
11:37:37  	at org.testng.Assert.fail(Assert.java:94)
11:37:37  	at org.testng.Assert.failNotEquals(Assert.java:496)
11:37:37  	at org.testng.Assert.assertEquals(Assert.java:125)
11:37:37  	at org.testng.Assert.assertEquals(Assert.java:372)
11:37:37  	at org.testng.Assert.assertEquals(Assert.java:539)
11:37:37  	at org.testng.Assert.assertEquals(Assert.java:516)
11:37:37  	at ReflectionFrames.testNewInstance(ReflectionFrames.java:436)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:37:37  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:37:37  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
11:37:37  	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
11:37:37  	at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
11:37:37  	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
11:37:37  	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
11:37:37  	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
11:37:37  	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
11:37:37  	at org.testng.TestRunner.privateRun(TestRunner.java:773)
11:37:37  	at org.testng.TestRunner.run(TestRunner.java:623)
11:37:37  	at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
11:37:37  	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
11:37:37  	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
11:37:37  	at org.testng.SuiteRunner.run(SuiteRunner.java:259)
11:37:37  	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
11:37:37  	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
11:37:37  	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
11:37:37  	at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
11:37:37  	at org.testng.TestNG.run(TestNG.java:1018)
11:37:37  	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:94)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:37:37  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:37:37  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
11:37:37  	at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:298)
11:37:37  	at java.base/java.lang.Thread.run(Thread.java:831)
11:37:37  testNewStackInspector: create
11:37:37      java.lang.StackWalker$StackFrameImpl@467b6709
11:37:37      java.lang.StackWalker$StackFrameImpl@374d6d30
11:37:37      java.lang.StackWalker$StackFrameImpl@7057916a
11:37:37  testNewStackInspector: reflect
11:37:37      java.lang.StackWalker$StackFrameImpl@ecc824f3
11:37:37      java.lang.StackWalker$StackFrameImpl@310a3a61
11:37:37      java.lang.StackWalker$StackFrameImpl@e31ba4eb
11:37:37      java.lang.StackWalker$StackFrameImpl@c645e474
11:37:37  testNewStackInspector: handle
11:37:37      java.lang.StackWalker$StackFrameImpl@df288fc4
11:37:37      java.lang.StackWalker$StackFrameImpl@dfea8c8c
11:37:37      java.lang.StackWalker$StackFrameImpl@b5b809a6
11:37:37      java.lang.StackWalker$StackFrameImpl@17617016
11:37:37  testNewStackInspector: create: show reflect
11:37:37      java.lang.StackWalker$StackFrameImpl@8b7b6e62
11:37:37      java.lang.StackWalker$StackFrameImpl@3809200a
11:37:37      java.lang.StackWalker$StackFrameImpl@6c1e8826
11:37:37      java.lang.StackWalker$StackFrameImpl@cc09f13d
11:37:37  testNewStackInspector: reflect: show reflect
11:37:37      java.lang.StackWalker$StackFrameImpl@e4ada85c
11:37:37      java.lang.StackWalker$StackFrameImpl@fb49ff75
11:37:37      java.lang.StackWalker$StackFrameImpl@98cbdd8e
11:37:37      java.lang.StackWalker$StackFrameImpl@a2fa4da5
11:37:37      java.lang.StackWalker$StackFrameImpl@685e4aad
11:37:37      java.lang.StackWalker$StackFrameImpl@f1c5eb3e
11:37:37  testNewStackInspector: handle: show reflect
11:37:37      java.lang.StackWalker$StackFrameImpl@5f847f72
11:37:37      java.lang.StackWalker$StackFrameImpl@57f41f80
11:37:37      java.lang.StackWalker$StackFrameImpl@43031815
11:37:37      java.lang.StackWalker$StackFrameImpl@bb996dc1
11:37:37      java.lang.StackWalker$StackFrameImpl@d3abea5e
11:37:37  test ReflectionFrames.testNewStackInspector(): success
11:37:37  test ReflectionFrames.testReflectCaller(): success
11:37:37  test ReflectionFrames.testSupplyCaller(): success
11:37:37  
11:37:37  ===============================================
11:37:37  java/lang/StackWalker/ReflectionFrames.java
11:37:37  Total tests run: 7, Failures: 2, Skips: 0
11:37:37  ===============================================
11:37:37  
11:37:37  STDERR:
11:37:37  java.lang.Exception: failures: 2
11:37:37  	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:96)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:37:37  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:37:37  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:37:37  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
11:37:37  	at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:298)
11:37:37  	at java.base/java.lang.Thread.run(Thread.java:831)
11:37:37  
11:37:37  JavaTest Message: Test threw exception: java.lang.Exception
11:37:37  JavaTest Message: shutting down test
11:37:37  
11:37:37  
11:37:37  TEST RESULT: Failed. Execution failed: `main' threw exception: java.lang.Exception: failures: 2
@M-Davies
Copy link
Author

This test is potentially not appropriate for openj9 since invoke() is linked to a HotSpot implementation of Method.class. I would appreciate a 2nd opinion on the matter.

@gacholio
Copy link
Contributor

@pdbain-ibm

@pdbain-ibm
Copy link
Contributor

I'll takes a look. FYI @pdbain.

@pshipton pshipton added this to To do in JTReg failures via automation Aug 15, 2019
@pdbain-ibm
Copy link
Contributor

@M-Davies I concur.

Dumping the actual vs expected for testConstructor():

Actual frames:
 ReflectionFrames$StackInspector::<init>
 jdk.internal.reflect.NativeConstructorAccessorImpl::newInstance0
 jdk.internal.reflect.NativeConstructorAccessorImpl::newInstance
 jdk.internal.reflect.DelegatingConstructorAccessorImpl::newInstance
 java.lang.reflect.Constructor::newInstance
 ReflectionFrames$StackInspector$Caller::create
 ReflectionFrames::testConstructor

Expected frames:
 ReflectionFrames$StackInspector::<init>
 ReflectionFrames$StackInspector$Caller::create
 ReflectionFrames::testConstructor

Similarly for testNewInstance():

Actual frames:
 ReflectionFrames$StackInspector::<init>
 java.lang.J9VMInternals::newInstanceImpl
 java.lang.Class::newInstance
 ReflectionFrames$StackInspector$Caller::create
 ReflectionFrames::testNewInstance

Expected frames:
 ReflectionFrames$StackInspector::<init>
 java.lang.Class::newInstance
 ReflectionFrames$StackInspector$Caller::create
 ReflectionFrames::testNewInstance

@M-Davies
Copy link
Author

@pdbain-ibm Thanks for looking into this! I'm happy to put a lid on this issue if you are?

@pdbain-ibm
Copy link
Contributor

Could you open an issue against the original test? If possible we should get this test fixed and included in the OpenJ9 testing.

@M-Davies
Copy link
Author

@pdbain-ibm please see #7124. Apologies for the delay

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

No branches or pull requests

3 participants