Missing doPrivileged in DatabaseClasses.WriteClassFile()
--------------------------------------------------------

                 Key: DERBY-4859
                 URL: https://issues.apache.org/jira/browse/DERBY-4859
             Project: Derby
          Issue Type: Bug
          Components: Services
    Affects Versions: 10.7.0.0
            Reporter: Knut Anders Hatlen
            Priority: Minor


One of my test runs failed with the following error:

1) 
testAllUncommittedReclaim(org.apache.derbyTesting.functionTests.tests.store.AccessTest)java.sql.SQLException:
 Java exception: 'access denied (java.io.FilePermission 
/export/home/tmp/kh160127/derbyall/system/ac72985692x012bxc9d4x9594xffffa08cb27a0.class
 write): java.security.AccessControlException'.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
(...)
Caused by: java.security.AccessControlException: access denied 
(java.io.FilePermission 
/export/home/tmp/kh160127/derbyall/system/ac72985692x012bxc9d4x9594xffffa08cb27a0.class
 write)
        at 
java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
        at 
java.security.AccessController.checkPermission(AccessController.java:546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at java.lang.SecurityManager.checkWrite(SecurityManager.java:962)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:169)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
        at 
org.apache.derby.impl.services.reflect.DatabaseClasses.WriteClassFile(Unknown 
Source)
        at 
org.apache.derby.impl.services.reflect.DatabaseClasses.loadGeneratedClass(Unknown
 Source)
(...)

I think the underlying error is an OutOfMemoryError, because I have seen tests 
running out of permgen space with the same configuration lately. But that error 
never gets all the way out to the test framework because of the above file 
permission error.

When DatabaseClasses.loadGeneratedClass() fails with a LinkageError or a 
VirtualMachineError (the super-class of OutOfMemoryError), it attempts to dump 
the generated class to disk. But since the tests run under a security manager, 
and the code writes the class to disk isn't wrapped in a privileged block, the 
dumping of extra debug info fails and hides the original error.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to