-
Bug
-
Resolution: Won't Fix
-
P3
-
None
-
7u21, 9
-
windows_2008
FULL PRODUCT VERSION :
JVM information:
Java HotSpot(TM) 64-Bit Server VM, 21.0-b17, 64 bit VM mode
Oracle Corporation
ADDITIONAL OS VERSION INFORMATION :
OS information:
Windows Server 2008, 6.0, amd64
A DESCRIPTION OF THE PROBLEM :
java.security.Permissions contains a boolean field called hasUnresolved, this field is written to unsynchronized, while reads are synchronized during an implies(Permission permission) call.
Unfortunately a race condition exists when a Permission remains unresolved, because other threads may only see the default value of hasUnresolved, preventing the Permissions object from attempting to resolve any UnresolvedPermission's.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
checkout River from:
http://svn.apache.org/repos/asf/river/jtsk/branches/2.2
$ ant qa.run
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Expected the unresolved permission to resolve.
com.sun.jini.start.SharedActivationPolicyPermission "file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/policy/defaultgroup.policy"
ACTUAL -
The permission:
com.sun.jini.start.SharedActivationPolicyPermission "file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/policy/defaultgroup.policy"
remained unresolved.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Running com/sun/jini/test/impl/start/ActivateWrapperActivateDescTest.td
Time is Sun Jan 05 19:47:43 GMT 2014
Starting test in separate process with command:
f:\hudson\tools\java\latest-1.7-64\jre\bin\java -Djava.security.policy=file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/policy/defaulttest.policy -Djava.rmi.server.codebase=http://hudson-win:9082/qa1-start-probe-dl.jar -cp f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jinitests.jar;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib\jsk-platform.jar;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib\jsk-lib.jar -client -Djava.ext.dirs=f:\hudson\tools\java\latest-1.7-64\jre\lib\ext;C:\Windows\Sun\Java\lib\ext;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib-ext;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib-ext -Dcom.sun.jini.jsk.port=9080 -Dcom.sun.jini.qa.port=9081 -Dcom.sun.jini.jsk.home=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2 -Dcom.sun.jini.qa.home=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa -Dcom.sun.jini.qa.harness.harnessJar=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar -Dcom.sun.jini.qa.harness.testJar=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jinitests.jar -Dcom.sun.jini.qa.harness.runjiniserver=true -Dcom.sun.jini.qa.harness.runkitserver=true -Djava.security.properties=file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/trust/dynamic-policy.properties -Dcom.sun.jini.qa.harness.testhosts= -Djava.util.logging.config.file=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\src\com\sun\jini\test\resources\qa1.logging -Dcom.sun.jini.test.home=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa -Dcom.sun.jini.test.port=9082 -Dcom.sun.jini.qa.harness.policies=file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/src/com/sun/jini/test/resources/jinitest.policy -Djava.rmi.server.useCodebaseOnly=false -Djava.ext.dirs=f:\hudson\tools\java\latest-1.7-64\jre\lib\ext;C:\Windows\Sun\Java\lib\ext;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib-ext;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib-ext com.sun.jini.qa.harness.MasterTest com/sun/jini/test/impl/start/ActivateWrapperActivateDescTest.td
TIME: 7:47:44 PM
MasterTest.doTest INFO:
============================== CALLING SETUP() ==============================
Jan 05, 2014 7:47:44 PM com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\], port 9081]
Jan 05, 2014 7:47:44 PM com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib-dl\], port 9080]
Jan 05, 2014 7:47:44 PM com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\], port 9082]
ActSys-err: Jan 05, 2014 7:47:45 PM com.sun.jini.phoenix.Activation init
ActSys-err: INFO: activation daemon started
com.sun.jini.qa.harness.TestException: Unexpected exception starting service; nested exception is:
Problem creating service for sharedGroupImpl; nested exception is:
exception constructing object; nested exception is:
java.lang.SecurityException: ProtectionDomain ProtectionDomain (file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/lib/group.jar <no signer certificates>)
null
<no principals>
java.security.Permissions@721708f9 (
(unresolved com.sun.jini.start.SharedActivationPolicyPermission file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\harness\policy\defaultgroup.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\harness\policy\policy.all null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\harness\policy\all.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\harness\policy\sec-jeri-group.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission jar:file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar!/harness/policy/defaultgroup.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission jar:file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar!/harness/policy/policy.all null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission jar:file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar!/harness/policy/all.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission jar:file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar!/harness/policy/sec-jeri-group.policy null)
("java.io.FilePermission" "f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\-" "read")
("java.util.PropertyPermission" "line.separator" "read")
("java.util.PropertyPermission" "java.vm.version" "read")
("java.util.PropertyPermission" "java.vm.specification.version" "read")
("java.util.PropertyPermission" "java.vm.specification.vendor" "read")
("java.util.PropertyPermission" "java.vendor.url" "read")
("java.util.PropertyPermission" "java.vm.name" "read")
("java.util.PropertyPermission" "os.name" "read")
("java.util.PropertyPermission" "java.vm.vendor" "read")
("java.util.PropertyPermission" "path.separator" "read")
("java.util.PropertyPermission" "java.specification.name" "read")
("java.util.PropertyPermission" "os.version" "read")
("java.util.PropertyPermission" "com.sun.jini.reggie.enableImplToStubReplacement" "read")
("java.util.PropertyPermission" "os.arch" "read")
("java.util.PropertyPermission" "java.class.version" "read")
("java.util.PropertyPermission" "java.version" "read")
("java.util.PropertyPermission" "file.separator" "read")
("java.util.PropertyPermission" "java.vendor" "read")
("java.util.PropertyPermission" "java.vm.specification.name" "read")
("java.util.PropertyPermission" "java.specification.version" "read")
("java.util.PropertyPermission" "java.specification.vendor" "read")
("java.net.SocketPermission" "localhost:1024-" "listen,resolve")
("java.lang.RuntimePermission" "stopThread")
("java.lang.RuntimePermission" "accessClassInPackage.com.sun.proxy")
)
does not have required permission: ("com.sun.jini.start.SharedActivationPolicyPermission" "file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/policy/defaultgroup.policy")
at com.sun.jini.qa.harness.SharedGroupAdmin.start(SharedGroupAdmin.java:218)
at com.sun.jini.qa.harness.AdminManager.startService(AdminManager.java:639)
at com.sun.jini.qa.harness.AdminManager.startService(AdminManager.java:660)
at com.sun.jini.test.impl.start.AbstractStartBaseTest.setup(AbstractStartBaseTest.java:64)
at com.sun.jini.qa.harness.MasterTest.doTest(MasterTest.java:217)
at com.sun.jini.qa.harness.MasterTest.main(MasterTest.java:142)
REPRODUCIBILITY :
This bug can be reproduced occasionally.
CUSTOMER SUBMITTED WORKAROUND :
Implement a java security policy provider, encapsulate the existing jvm policy provider.
Ensure that java.security.Permissions object is synchronized during calls to add() or thread confine Permissions objects.
JVM information:
Java HotSpot(TM) 64-Bit Server VM, 21.0-b17, 64 bit VM mode
Oracle Corporation
ADDITIONAL OS VERSION INFORMATION :
OS information:
Windows Server 2008, 6.0, amd64
A DESCRIPTION OF THE PROBLEM :
java.security.Permissions contains a boolean field called hasUnresolved, this field is written to unsynchronized, while reads are synchronized during an implies(Permission permission) call.
Unfortunately a race condition exists when a Permission remains unresolved, because other threads may only see the default value of hasUnresolved, preventing the Permissions object from attempting to resolve any UnresolvedPermission's.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
checkout River from:
http://svn.apache.org/repos/asf/river/jtsk/branches/2.2
$ ant qa.run
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Expected the unresolved permission to resolve.
com.sun.jini.start.SharedActivationPolicyPermission "file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/policy/defaultgroup.policy"
ACTUAL -
The permission:
com.sun.jini.start.SharedActivationPolicyPermission "file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/policy/defaultgroup.policy"
remained unresolved.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Running com/sun/jini/test/impl/start/ActivateWrapperActivateDescTest.td
Time is Sun Jan 05 19:47:43 GMT 2014
Starting test in separate process with command:
f:\hudson\tools\java\latest-1.7-64\jre\bin\java -Djava.security.policy=file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/policy/defaulttest.policy -Djava.rmi.server.codebase=http://hudson-win:9082/qa1-start-probe-dl.jar -cp f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jinitests.jar;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib\jsk-platform.jar;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib\jsk-lib.jar -client -Djava.ext.dirs=f:\hudson\tools\java\latest-1.7-64\jre\lib\ext;C:\Windows\Sun\Java\lib\ext;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib-ext;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib-ext -Dcom.sun.jini.jsk.port=9080 -Dcom.sun.jini.qa.port=9081 -Dcom.sun.jini.jsk.home=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2 -Dcom.sun.jini.qa.home=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa -Dcom.sun.jini.qa.harness.harnessJar=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar -Dcom.sun.jini.qa.harness.testJar=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jinitests.jar -Dcom.sun.jini.qa.harness.runjiniserver=true -Dcom.sun.jini.qa.harness.runkitserver=true -Djava.security.properties=file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/trust/dynamic-policy.properties -Dcom.sun.jini.qa.harness.testhosts= -Djava.util.logging.config.file=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\src\com\sun\jini\test\resources\qa1.logging -Dcom.sun.jini.test.home=f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa -Dcom.sun.jini.test.port=9082 -Dcom.sun.jini.qa.harness.policies=file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/src/com/sun/jini/test/resources/jinitest.policy -Djava.rmi.server.useCodebaseOnly=false -Djava.ext.dirs=f:\hudson\tools\java\latest-1.7-64\jre\lib\ext;C:\Windows\Sun\Java\lib\ext;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib-ext;f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib-ext com.sun.jini.qa.harness.MasterTest com/sun/jini/test/impl/start/ActivateWrapperActivateDescTest.td
TIME: 7:47:44 PM
MasterTest.doTest INFO:
============================== CALLING SETUP() ==============================
Jan 05, 2014 7:47:44 PM com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\], port 9081]
Jan 05, 2014 7:47:44 PM com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\lib-dl\], port 9080]
Jan 05, 2014 7:47:44 PM com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\], port 9082]
ActSys-err: Jan 05, 2014 7:47:45 PM com.sun.jini.phoenix.Activation init
ActSys-err: INFO: activation daemon started
com.sun.jini.qa.harness.TestException: Unexpected exception starting service; nested exception is:
Problem creating service for sharedGroupImpl; nested exception is:
exception constructing object; nested exception is:
java.lang.SecurityException: ProtectionDomain ProtectionDomain (file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/lib/group.jar <no signer certificates>)
null
<no principals>
java.security.Permissions@721708f9 (
(unresolved com.sun.jini.start.SharedActivationPolicyPermission file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\harness\policy\defaultgroup.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\harness\policy\policy.all null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\harness\policy\all.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\harness\policy\sec-jeri-group.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission jar:file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar!/harness/policy/defaultgroup.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission jar:file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar!/harness/policy/policy.all null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission jar:file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar!/harness/policy/all.policy null)
(unresolved com.sun.jini.start.SharedActivationPolicyPermission jar:file:f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\jiniharness.jar!/harness/policy/sec-jeri-group.policy null)
("java.io.FilePermission" "f:\hudson\hudson-slave\workspace\river-2.2-qa-win\2.2.2\qa\lib\-" "read")
("java.util.PropertyPermission" "line.separator" "read")
("java.util.PropertyPermission" "java.vm.version" "read")
("java.util.PropertyPermission" "java.vm.specification.version" "read")
("java.util.PropertyPermission" "java.vm.specification.vendor" "read")
("java.util.PropertyPermission" "java.vendor.url" "read")
("java.util.PropertyPermission" "java.vm.name" "read")
("java.util.PropertyPermission" "os.name" "read")
("java.util.PropertyPermission" "java.vm.vendor" "read")
("java.util.PropertyPermission" "path.separator" "read")
("java.util.PropertyPermission" "java.specification.name" "read")
("java.util.PropertyPermission" "os.version" "read")
("java.util.PropertyPermission" "com.sun.jini.reggie.enableImplToStubReplacement" "read")
("java.util.PropertyPermission" "os.arch" "read")
("java.util.PropertyPermission" "java.class.version" "read")
("java.util.PropertyPermission" "java.version" "read")
("java.util.PropertyPermission" "file.separator" "read")
("java.util.PropertyPermission" "java.vendor" "read")
("java.util.PropertyPermission" "java.vm.specification.name" "read")
("java.util.PropertyPermission" "java.specification.version" "read")
("java.util.PropertyPermission" "java.specification.vendor" "read")
("java.net.SocketPermission" "localhost:1024-" "listen,resolve")
("java.lang.RuntimePermission" "stopThread")
("java.lang.RuntimePermission" "accessClassInPackage.com.sun.proxy")
)
does not have required permission: ("com.sun.jini.start.SharedActivationPolicyPermission" "file:/F:/hudson/hudson-slave/workspace/river-2.2-qa-win/2.2.2/qa/harness/policy/defaultgroup.policy")
at com.sun.jini.qa.harness.SharedGroupAdmin.start(SharedGroupAdmin.java:218)
at com.sun.jini.qa.harness.AdminManager.startService(AdminManager.java:639)
at com.sun.jini.qa.harness.AdminManager.startService(AdminManager.java:660)
at com.sun.jini.test.impl.start.AbstractStartBaseTest.setup(AbstractStartBaseTest.java:64)
at com.sun.jini.qa.harness.MasterTest.doTest(MasterTest.java:217)
at com.sun.jini.qa.harness.MasterTest.main(MasterTest.java:142)
REPRODUCIBILITY :
This bug can be reproduced occasionally.
CUSTOMER SUBMITTED WORKAROUND :
Implement a java security policy provider, encapsulate the existing jvm policy provider.
Ensure that java.security.Permissions object is synchronized during calls to add() or thread confine Permissions objects.