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

method with 1000 local variables and short Unix environment crashes VM

XMLWordPrintable

    • jit
    • sparc
    • solaris_2.5.1

      333344444444445555555555666666=
      66667777777
      v1k3=3D000000000011111111112222222222333333333344444444445555555555666666=
      666677777777778888888888999999999
      i=E8k2=3D0000000000111111111122222222223333333333444444444455555555556666=
      666666777777777788888888889999999999
      v1k1=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k0=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k7=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k6=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k5=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k4=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      _JVM_THREADS_TYPE=3D
      LD_LIBRARY_PATH=3D/export/ld25/java/dest/jdk1.2fcs/solaris/bin/../jre/lib=
      /sparc/green_threads:/export/ld25/java/dest/jdk1.2fcs/solaris/bin/../jre/=
      lib/sparc/classic:/export/ld25/java/dest/jdk1.2fcs/solaris/bin/../jre/lib=
      /sparc:







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


      Name: laC46010 Date: 11/05/98



      The VM (versions 1.2fcs-M, -N, -O, -P,) crashes while executing the following test.
      The test contains 1000 local variable declarations in one of the methods.
      If test is executed without jit it works ok even with 4500 local variables. This bug
      happens if the process environment is lower than 2 Kbytes. If the process environment
      is more than 2100 bytes no segmentation fault arise.
      The bug causes failures of the follwoing JCK-12a tests:
          lang/TYPE/type093/type09302m1/type09302m1.html
          lang/TYPE/type093/type09302m2/type09302m2.html
          lang/TYPE/type093/type09302m3/type09302m3.html
          lang/TYPE/type093/type09302m4/type09302m4.html
          lang/TYPE/type093/type09302m6/type09302m6.html
      Version JDK1.1.6 works okay with this tests with jit on or off.

      The test and VM diagnostics follow:
      -------------------------------------------------------
      novo35% cat
      import java.io.PrintStream;

      public class type09302m1 {

          public static void main(String args[]) {
              System.exit(run(args, System.out) + 95/*STATUS_TEMP*/);
          }

          public static int run(String args[],PrintStream out) {
              byte a;
              try {
                  byte x0 = (byte) 0;
                  byte x1 = (byte) 1; x1 = x0;
                  byte x2 = (byte) 2; x2 = x1;
                  byte x3 = (byte) 3; x3 = x2;
                  byte x4 = (byte) 4; x4 = x3;
                  byte x5 = (byte) 5; x5 = x4;
                  byte x6 = (byte) 6; x6 = x5;
                  byte x7 = (byte) 7; x7 = x6;
                  byte x8 = (byte) 8; x8 = x7;
                  byte x9 = (byte) 9; x9 = x8;
                  byte x10 = (byte) 10; x10 = x9;
      ... 980 more variable declarations ...
                  byte x990 = (byte) 990; x990 = x989;
                  byte x991 = (byte) 991; x991 = x990;
                  byte x992 = (byte) 992; x992 = x991;
                  byte x993 = (byte) 993; x993 = x992;
                  byte x994 = (byte) 994; x994 = x993;
                  byte x995 = (byte) 995; x995 = x994;
                  byte x996 = (byte) 996; x996 = x995;
                  byte x997 = (byte) 997; x997 = x996;
                  byte x998 = (byte) 998; x998 = x997;
                  byte x999 = (byte) 999; x999 = x998;
                  a = x999;
              } catch (Throwable e) {
                  out.println("Exception: " + e);
                  return 2;/*STATUS_FAILED*/
              }
              if ( a != 0 ) return 2;/*STATUS_FAILED*/
              return 0;/*STATUS_PASSED*/
          }
      }

      novo35% env
      DTUSERSESSION=sns-novo35-0
      a20=12345678901234567890
      a40=12345678901234567890
      a60=12345678901234567890
      a80=12345678901234567890
      a100=12345678901234567890
      a150=12345678901234567890123456789012345678901234567890
      a200=12345678901234567890123456789012345678901234567890
      a250=12345678901234567890123456789012345678901234567890
      a300=12345678901234567890123456789012345678901234567890
      a400=123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
      a500=123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
      a600=123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
      a700=123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
      a800=123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
      a900=123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
      a1k=123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
      novo35% java -version
      java version "1.2fcs"
      Classic VM (build JDK-1.2fcs-O, green threads, sunwjit)
      novo35% javac type09302m1.java
      novo35% java -verify javasoft.sqe.tests.lang.type093.type09302m1.type09302m1
      Segmentation Fault

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

      The complete test source is attached.

      dimtry.khukhro@Eng 1998-11-05

      Name: laC46010 Date: 11/06/98


      This JCK test cases were added only in JCK-12b. In description above they
      were mistakenly mentioned as JCK-12a tests.

      The following template will generate complete test case:
      novo35% cat MkTest.java
      public class MkTest {
        static int VMAX =3D 1000; /* Number of locals */
        public static void main(String[] argv) {
          System.out.println("package javasoft.sqe.tests.lang.type093.type09302=
      m1;\n");
          System.out.println("import java.io.PrintStream;\n");
          System.out.println("public class type09302m1 {\n");
          System.out.println("\tpublic static void main(String args[]) {");
          System.out.println("\t\tSystem.exit(run(args, System.out) + 95/*STATU=
      S_TEMP*/);\n\t}");
          System.out.println("\tpublic static int run(String args[],PrintStream=
       out) {");
          System.out.println("\t\tbyte a;\n\t\ttry {");
          System.out.println("\t\t\tbyte x0 =3D 0;");
          for (int i =3D 1; i < VMAX; i++)
            System.out.println("\t\t\tbyte x"+i+" =3D (byte) "+i+"; x"+i+" =3D =
      x"+(i-1)+";");
          System.out.println("\t\t\ta =3D x999;\n\t\t} catch (Throwable e) {");
          System.out.println("\t\t\tout.println(\"Exception: \" + e);");
          System.out.println("\t\t\treturn 2;/*STATUS_FAILED*/\n\t\t}");
          System.out.println("\t\tif ( a !=3D 0 ) return 2;/*STATUS_FAILED*/");
          System.out.println("\t\treturn 0;/*STATUS_PASSED*/\n\t}\n}\n");
        }
      }
      novo35% javac MkTest.java
      novo35% java MkTest > type09302m1.java
      novo35% javac type09302m1.java
      novo35% java -verify javasoft.sqe.tests.lang.type093.type09302m1.type0930=
      2m1
      Segmentation Fault

      Test wrapper below shows that the test indeed overwrite the VM environmen=
      t memory area.
      This possibly could lead to some security problems if some important envi=
      ronment variables
      (like CLASSPATH or LD_LIBRARY_PATH for example) are changed.
      If so, the priority could be increased.

      novo35% cat bug.java
      import java.io.*;

      public class bug {
          public static int deep=3D20;
          public static void main(String args[]) {
              try {
                  r();
                  Process p =3D Runtime.getRuntime().exec("/bin/env");
                  InputStream stdOut =3D p.getInputStream();
                  int i;
                  while((i =3D stdOut.read()) !=3D -1) System.out.print((char) =
      i);
                  p.waitFor();
              } catch(Throwable e) {
                  System.out.println("Exception: " + e);
              }
          }
          public static int r() {
              javasoft.sqe.tests.lang.type093.type09302m1.type09302m1.run(new S=
      tring[0],
      System.out);
              return deep-- !=3D 0 ? r() : 0;
          }
      }

      novo35%
      novo35% env
      v0k0=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k0=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k0=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k1=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k1=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k1=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k2=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k2=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k2=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k3=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k3=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k3=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k4=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k4=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k4=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k5=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k5=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k5=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k6=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k6=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k6=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k7=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k7=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k7=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k8=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k8=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k8=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k9=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k9=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k9=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999

      novo35% /export/ld25/java/dest/jdk1.2fcs/solaris/bin/java -verify -Djava.=
      compiler=3Dnone bug
      Warning: JIT compiler "none" not found. Will use interpreter.
      _=3D/export/ld25/java/dest/jdk1.2fcs/solaris/bin/../bin/sparc/green_threa=
      ds/java
      v0k9=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k8=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k9=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k8=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k5=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k1=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k4=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k0=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k7=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k3=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k6=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k2=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k5=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k1=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k4=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k0=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k7=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k3=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k6=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k2=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      LD_BIND_NOW=3Dyes
      v1k9=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k8=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k3=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k2=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k1=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k0=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k7=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k6=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k5=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v1k4=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      _JVM_THREADS_TYPE=3D
      LD_LIBRARY_PATH=3D/export/ld25/java/dest/jdk1.2fcs/solaris/bin/../jre/lib=
      /sparc/green_threads:/export/ld25/java/dest/jdk1.2fcs/solaris/bin/../jre/=
      lib/sparc/classic:/export/ld25/java/dest/jdk1.2fcs/solaris/bin/../jre/lib=
      /sparc:




      novo35% /export/ld25/java/dest/jdk1.2fcs/solaris/bin/java -verify bug
      _=3D/export/ld25/java/dest/jdk1.2fcs/solaris/bin/../bin/sparc/green_threa=
      ds/java
      v0k9=3D000000000011111
      v0k8=3D0000000000111111111122222222223333333
      v2k9=3D00000000001111111111222222222233333333334444444444555555555
      v2k8=3D000000000011111111112222222222333333333344444444445555555555666666=
      666677777777778
      v2k5=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0
      v2k4=3D0000000000111111111
      v0k0=3D00000000001111111111222222222233333333334
      v2k7=3D000000000011111111112222222222333333333344444444445555555555666
      v0k3=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888
      v2k6=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v0k2=3D0
      v0k5=3D00000000001111111111222
      v2k1=3D000000000011111111112222222222333333333344444
      v0k4=3D000000000011111111112222222222333333333344444444445555555555666666=
      6
      v2k0=3D000000000011111111112222222222333333333344444444445555555555666666=
      66667777777777888888888
      v0k7=3D000000000011111111112222222222333333333344444444445555555555666666=
      6666777777777788888888889999999999
      v2k3=3D00000
      v0k6=3D000000000011111111112222222
      v2k2=3D0000000000111111111122222222223333333333444444444
      LD_BIND_NOW=3Dyes
      v1k9=3D0000000000111111111122222222223333333333444444444455555
      v1k8=3D000000000011111111112222222222333333

            Unassigned Unassigned
            leosunw Leo Leo (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: