Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4971014

TEST_BUG: Regression test .../ProtectionDomain/RecursionDebug.java fails with jt

XMLWordPrintable

    • x86
    • linux, solaris_8, solaris_9, windows_xp



      Name: vsR10238 Date: 12/19/2003


      Filed By : J2SE-SQA [###@###.###
      JDK : JDK1.5.0 (tested with b31), JDK1.4.2 (b28)
      Testbase : Regression-test (for JDK1.5.0-b31)
      Platform[s] : All: RedHat Advanced Server 2.1 (Gnome), Windows XP Pro, Solaris 8 (sparc) (CDE), Solaris 9 (x86) (CDE)
      Falling test[s]:
               java/security/ProtectionDomain/RecursionDebug.java

      Regression test java/security/ProtectionDomain/RecursionDebug.java fails with JDK1.5.0-b31 when executed from jtreg
      with

      java.security.AccessControlException: access denied (java.io.FilePermission /net/linux-15/export/home/java/jct-3.1.2/lib/javatest.jar read)

      The test passes with JDK1.5.0-b31 if I run the compiled class manually with the same command line as jtreg does:
      ~/java/jdk1.5.0/linux/bin/java -Djava.security.manager=default -Djava.security.policy==Recursion.policy -Djava.security.debug=domain RecursionDebug

      When the test is run from the javatest/jtreg harness, it is executed in the com.sun.javatest.regtest.MainWrapper class,
      which calls com.sun.javatest.Status.exit.

      Even if the test is reduced only to the following, it fails:

      import java.security.*;
      import java.net.*;
      import com.sun.javatest.Status;
      public class RecursionDebug {
           public static class RecursionSM extends SecurityManager {
               public void checkPermission(Permission p) {
                   super.checkPermission(p);
               }
           }
           public static void main(String[] args) throws Exception {
               System.setSecurityManager(new RecursionDebug.RecursionSM());
               Status.passed("").exit();
           }
      }

      With the following modifications the test works similarly as under jtreg as without it (passes under jtreg):

           public static void main(String[] args) throws Exception {
               SecurityManager smOld=System.getSecurityManager();
               try{

      ... original main code ...

               }finally{
                   if (smOld!=null)
                       System.setSecurityManager(smOld);
               }
           }



      Test source location:
      =====================
      /java/re/jdk/1.5.0/promoted/all/b31/ws/j2se/test/java/security/ProtectionDomain/RecursionDebug.java

      jtr file location:
      ==================
      /net/jtgb4u4c.sfbay/export/sail15/results.2/tiger/b31/regtest/x86/sol9_x86_cde_smp_linux-6/workDir/test/java/security/ProtectionDomain/RecursionDebug.jtr

      How to reproduce:
      =================
      Run the following script (you may need to change its variables)

      --- script start ---
      #!/bin/sh
      RESULT_DIR=`pwd`
      WORK_DIR=$RESULT_DIR/workDir/test
      REPORT_DIR=$RESULT_DIR/reportDir

      #Paths in Java Software:
      JT_HOME="/java/re/jct-tools/3.1.2/archive/fcs/binaries"
      JEMMY_JAR="/net/jdk/export/jpse04/Jemmy/jemmy.jar"
      JAVA_HOME="/java/re/jdk/1.5.0/promoted/all/b31/binaries/solaris-i586"
      TEST_BASE_PATH="/java/re/jdk/1.5.0/promoted/all/b31/ws/j2se/test"

      #Alternative paths outside Java Software:
      #JT_HOME="/net/koori.sfbay/onestop/jct-tools/3.1.2/archive/fcs/binaries"
      #JEMMY_JAR="/net/jdk/export/jpse04/Jemmy/jemmy.jar"
      #JAVA_HOME="/net/koori.sfbay/onestop/jdk/1.5.0/promoted/all/b31/binaries/solaris-i586"
      #TEST_BASE_PATH="/net/koori.sfbay/onestop/jdk/1.5.0/promoted/all/b31/ws/j2se/test"


      TESTVMOPTS="-client"
      CLASSPATH="$JT_HOME/classes:$JT_HOME/lib/javatest.jar:$JT_HOME/lib/jtreg.jar"

      TEST="java/security/ProtectionDomain/RecursionDebug.java"

      mkdir -p $WORK_DIR/scratch 2>&1
      mkdir -p $WORK_DIR/jtData 2>&1
      mkdir -p $REPORT_DIR 2>&1

      #rm $WORK_DIR/jtData/ResultCache.jtw 2>&1

      cd $WORK_DIR/scratch

      $JAVA_HOME/bin/java -server -cp $CLASSPATH -DenvVars=TESTJAVAHOME=$JAVA_HOME,TESTVMOPTS=$TESTVMOPTS,DISPLAY=:0,HOME=$HOME/.regtest,PATH=/bin:/usr/bin,CPAPPEND=$JEMMY_JAR,TZ=,LC_ALL=en_US,LC_CTYPE=en_US,LANG=en_US,LPDEST= -DDISPLAY=:0 -DlocalHost="linux-6" -Dprogram=jtreg com.sun.javatest.regtest.Main -a -v default -batch -params -w "$WORK_DIR" -r "$REPORT_DIR" -t "$TEST_BASE_PATH" "$TEST_BASE_PATH/$TEST"

      --- script end ---

      Script output:
      ==============

      Test output (jtr part):
      =======================
      ----------System.out:(0/0)----------
      ----------System.err:(26/1801)----------
      STATUS:Passed.
      Exception in thread "main" java.security.AccessControlException: access denied (java.io.FilePermission /net/linux-15/export/home/java/jct-3.1.2/lib/javatest.jar read)
      at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
      at java.security.AccessController.checkPermission(AccessController.java:401)
      at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
      at RecursionDebug$RecursionSM.checkPermission(RecursionDebug.java:17)
      at java.lang.SecurityManager.checkRead(SecurityManager.java:863)
      at java.io.File.isDirectory(File.java:713)
      at sun.net.www.ParseUtil.fileToEncodedURL(ParseUtil.java:228)
      at sun.security.provider.PolicyFile.canonicalizeCodebase(PolicyFile.java:1811)
      at sun.security.provider.PolicyFile.access$600(PolicyFile.java:262)
      at sun.security.provider.PolicyFile$4.run(PolicyFile.java:1259)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1255)
      at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1203)
      at sun.security.provider.PolicyFile.implies(PolicyFile.java:1158)
      at java.security.ProtectionDomain.implies(ProtectionDomain.java:195)
      at java.security.AccessControlContext.checkPermission(AccessControlContext.java:249)
      at java.security.AccessController.checkPermission(AccessController.java:401)
      at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
      at RecursionDebug$RecursionSM.checkPermission(RecursionDebug.java:17)
      at java.lang.SecurityManager.checkExit(SecurityManager.java:736)
      at java.lang.Runtime.exit(Runtime.java:88)
      at java.lang.System.exit(System.java:867)
      at com.sun.javatest.Status.exit(Status.java:264)
      at com.sun.javatest.regtest.MainWrapper.main(MainWrapper.java:67)
      result: Failed. Unexpected exit from test [exit code: 1]


      test result: Failed. Unexpected exit from test [exit code: 1]


      Specific machine info:
      ======================
      Hostname: linux-1
      OS: Solaris 8 (sparc) (CDE)
      Hostname: linux-16
      OS: Windows XP Pro
      Hostname: linux-24
      OS: RedHat Advanced Server 2.1 (Gnome)
      Hostname: linux-6
      OS: Solaris 9 (x86) (CDE)



      ======================================================================

            Unassigned Unassigned
            vshsunw Vsh Vsh (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: