On Thu, 6 Apr 2023 18:09:33 GMT, Mandy Chung <[email protected]> wrote:
> If you run the test with the system property on, it's dumped in the scratch
> directory. Do you run with jtreg command?
I ran with `make test TEST="test/jdk/java/lang/invoke/MethodHandleProxies"`.
The scratch's subdirectories (corresponding to processors) are all empty.
> > It appears the default class hierarchy resolver cannot be used to generates
> > stack maps with only the FilePermission required by JTReg granted.
>
> what permission does it need?
It didn't explicitly fail with a security exception; the test fails with such a
stacktrace:
java.lang.IllegalArgumentException: Could not resolve class RuntimeException
at
java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.resolve(ClassHierarchyImpl.java:59)
at
java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.isInterface(ClassHierarchyImpl.java:69)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeReferenceFrom(StackMapGenerator.java:1360)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeFrom(StackMapGenerator.java:1328)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.merge(StackMapGenerator.java:1191)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.checkAssignableTo(StackMapGenerator.java:1141)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.checkJumpTarget(StackMapGenerator.java:263)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.processExceptionHandlerTargets(StackMapGenerator.java:659)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.processBlock(StackMapGenerator.java:645)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.processMethod(StackMapGenerator.java:420)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.generate(StackMapGenerator.java:293)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.<init>(StackMapGenerator.java:232)
at
java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.writeBody(DirectCodeBuilder.java:333)
at
java.base/jdk.internal.classfile.impl.UnboundAttribute$AdHocAttribute.writeTo(UnboundAttribute.java:914)
at
java.base/jdk.internal.classfile.impl.AttributeHolder.writeTo(AttributeHolder.java:56)
at
java.base/jdk.internal.classfile.impl.DirectMethodBuilder.writeTo(DirectMethodBuilder.java:136)
at
java.base/jdk.internal.classfile.impl.BufWriterImpl.writeList(BufWriterImpl.java:194)
at
java.base/jdk.internal.classfile.impl.DirectClassBuilder.build(DirectClassBuilder.java:176)
at java.base/jdk.internal.classfile.Classfile.build(Classfile.java:218)
at java.base/jdk.internal.classfile.Classfile.build(Classfile.java:200)
at java.base/jdk.internal.classfile.Classfile.build(Classfile.java:186)
at
java.base/java.lang.invoke.MethodHandleProxies.createTemplate(MethodHandleProxies.java:297)
at
java.base/java.lang.invoke.MethodHandleProxies$1.computeValue(MethodHandleProxies.java:260)
at
java.base/java.lang.invoke.MethodHandleProxies$1.computeValue(MethodHandleProxies.java:229)
at java.base/java.lang.ClassValue.getFromHashMap(ClassValue.java:229)
at java.base/java.lang.ClassValue.getFromBackup(ClassValue.java:211)
at java.base/java.lang.ClassValue.get(ClassValue.java:117)
at
java.base/java.lang.invoke.MethodHandleProxies.asInterfaceInstance(MethodHandleProxies.java:195)
at WithSecurityManagerTest.main(WithSecurityManagerTest.java:38)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at
com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
at java.base/java.lang.Thread.run(Thread.java:1630)
Think it relates to the behavior of `ClassLoader.getSystemResourceAsStream`.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/13197#issuecomment-1499458101