JDK-7096664 : In Applet - java.security.AccessControlException - ExecutorService
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 7
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • CPU: x86
  • Submitted: 2011-09-30
  • Updated: 2012-03-20
  • Resolved: 2011-10-14
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
Java Plug-in 10.0.0.147
Using JRE version 1.7.0-b147 Java HotSpot(TM) Client VM

ADDITIONAL OS VERSION INFORMATION :
Windows 7 Professional

EXTRA RELEVANT SYSTEM CONFIGURATION :
JRE 7 Plugin - Windows 7 IE version 8.0

A DESCRIPTION OF THE PROBLEM :
In Applet that uses Executors.newFixedThreadPool(3) when Applet is closed following exception is thrown:

plugin2manager.parentwindowDispose
Exception in thread "pool-6-thread-1" java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")

Same is true if Executors.newCachedThreadPool() is used.

REGRESSION.  Last worked in version 6u26

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create Applet

On init call:
Executors.newFixedThreadPool(3);

When applet is destroyed error occurs.

Thanks,

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No exception should be thrown.
ACTUAL -
Exception is thrown

ERROR MESSAGES/STACK TRACES THAT OCCUR :
plugin2manager.parentwindowDispose
Exception in thread "pool-6-thread-1" java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at sun.plugin2.applet.SecurityManagerHelper.checkAccessHelper(Unknown Source)
	at sun.plugin2.applet.AWTAppletSecurityManager.checkAccess(Unknown Source)
	at java.lang.ThreadGroup.checkAccess(Unknown Source)
	at java.lang.Thread.init(Unknown Source)
	at java.lang.Thread.<init>(Unknown Source)
	at java.util.concurrent.Executors$DefaultThreadFactory.newThread(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.<init>(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.addWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.processWorkerExit(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


REPRODUCIBILITY :
This bug can be reproduced always.

CUSTOMER SUBMITTED WORKAROUND :
There is none.

Comments
EVALUATION this should be fixed already in 7u1 and 7u2: 7068741: Security manager uses wrong ThreadGroup when it checks applet permissions in 1.7
14-10-2011