RFR: 8000975: (process) Merge UNIXProcess.java.bsd & UNIXProcess.java.linux (& .solaris & .aix)
Peter Levart
peter.levart at gmail.com
Thu Apr 17 15:33:12 UTC 2014
Hi Martin,
Since you are the author of the
test/java/lang/ProcessBuilder/SecurityManagerClinit.java test, I thought
I'll ask you about the purpose of the following line in the test just
before setting up the Policy and SecurityManager:
// A funky contrived security setup, just for bug repro purposes.
java.security.Security.setProperty("package.access", "java.util");
The merge of UNIXProcess.java.* sources fails this test since it now
uses lambdas in various places and it seems that MHs are involved that
need access to java.util package from a class loaded by AppClassLoader.
Would it defeat the purpose of the test if "java.util" package was
replaced by say "sun.misc" which is normally restricted?
Regards, Peter
On 04/04/2014 09:24 PM, roger riggs wrote:
> Hi Peter,
>
> I ran into one test problem when running this through its paces.
>
> The test: test/java/lang/ProcessBuilder/SecurityManagerClinit.java
> throws a package access exception while creating a lambda
> due to the wacky security manager and forbidding of access to java.util.
> I hacked the test to remove the limitation on java.util.
>
> This looks good to me but a more experienced Reviewer should look at it.
>
> Thanks, Roger
>
>
>> Right,
>>
>> Here it is:
>>
>> http://cr.openjdk.java.net/~plevart/jdk9-dev/UNIXProcess/webrev.06/
>
>
> Stack dump from test:
> java.lang.ExceptionInInitializerError
> at
> java.lang.invoke.DirectMethodHandle.makePreparedLambdaForm(DirectMethodHandle.java:256)
> at
> java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:221)
> at
> java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:210)
> at
> java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:82)
> at
> java.lang.invoke.MethodHandles$Lookup.getDirectMethodCommon(MethodHandles.java:1638)
> at
> java.lang.invoke.MethodHandles$Lookup.getDirectMethodNoSecurityManager(MethodHandles.java:1602)
> at
> java.lang.invoke.MethodHandles$Lookup.getDirectMethodForConstant(MethodHandles.java:1778)
> at
> java.lang.invoke.MethodHandles$Lookup.linkMethodHandleConstant(MethodHandles.java:1727)
> at
> java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:442)
> at java.lang.UNIXProcess$Platform.get(UNIXProcess.java:147)
> at java.lang.UNIXProcess.<clinit>(UNIXProcess.java:160)
> at java.lang.ProcessImpl.start(ProcessImpl.java:130)
> at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
> at java.lang.Runtime.exec(Runtime.java:620)
> at java.lang.Runtime.exec(Runtime.java:485)
> at SecurityManagerClinit.main(SecurityManagerClinit.java:70)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:484)
> at
> com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:94)
> at java.lang.Thread.run(Thread.java:744)
> Caused by: java.security.AccessControlException: access denied
> ("java.lang.RuntimePermission" "accessClassInPackage.java.util")
> at
> java.security.AccessControlContext.checkPermission(AccessControlContext.java:457)
> at
> java.security.AccessController.checkPermission(AccessController.java:884)
> at
> java.lang.SecurityManager.checkPermission(SecurityManager.java:541)
> at
> java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1481)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:305)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:359)
> at
> sun.invoke.util.BytecodeDescriptor.parseSig(BytecodeDescriptor.java:83)
> at
> sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:54)
> at
> sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:41)
> at
> java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:911)
> at java.lang.invoke.MemberName.getMethodType(MemberName.java:144)
> at
> java.lang.invoke.LambdaForm.computeInitialPreparedForms(LambdaForm.java:477)
> at java.lang.invoke.LambdaForm.<clinit>(LambdaForm.java:1641)
>
More information about the core-libs-dev
mailing list