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

Server Compiler Crash in parser

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 5.0
    • hotspot
    • sparc
    • solaris_2.6



      Name: ks84122 Date: 12/02/2003


      The below testcase when run with the debug version of java with CompilerNullChecks off would cause an assert in the server compiler.

      cat > SieveBits.java << \!
      class BitSet
      { int P[];
              int K;
              public BitSet (int k)
              { P=new int[k/32+1]; K=k;
              }
              synchronized public void set (int i)
              { if (i<0) throw new ArrayIndexOutOfBoundsException("");
                      P[i>>5]|=(1<<(i&0x0000001F));
              }
              synchronized public void clear (int i)
              { P[i>>5]&=~(1<<(i&0x0000001F));
              }
              synchronized public boolean get (int i)
              { return (P[i>>5]&(1<<(i&0x0000001F)))!=0;
              }
              public int size ()
              { return K;
              }
      }
              
              
      /* Sieve.java
      Das Primzahlsieb f?r Java.
      */

      public class SieveBits
      { static BitSet prime;
              // Enthaelt Flags fuer die ungeraden Zahlen:
         // 3,5,7,...
         // D.h., 2*i+3 ist prim, wenn prime[i] war ist
         
              static public void main (String args[])
          // Hauptprogramm
          { int n;
                      if (args.length==0) n=100000000;
                      // falls keine Argumente in der Kommandozeile
                      else n=Integer.parseInt(args[0]);
                      // lies Anzahl aus der Kommandozeile
                      int k=(n-3)/2;
                      System.out.println("Counting primes up to "+(2*k+3)+".");
                      long time=System.currentTimeMillis();
                      prime=new BitSet(k);
              sieve(); // das Sieb
                      // Zaehle gefundene Primzahlen:
                      int count=1,i;
                      for (i=0; i<k; i++)
                              if (prime.get(i)) count++;
                      // Ausgabe:
                      time=System.currentTimeMillis()-time;
                      System.out.println(count+" primes found.");
                      System.out.println(time/1000+" seconds needed");
                      // list(); // nur fuer Testzwecke
              }
         
              static void sieve ()
              // das Sieb
              { int k=prime.size(),i,j,p,l;
                      // Zuerst alle Zahlen auf prim setzen
                      for (i=0; i<k; i++) prime.set(i);
                      // Dann Vielfache von Primzahlen aussieben
                      for (i=0; i<k; i++)
                      {
                              if (prime.get(i)) // 2*i+3 ist prim
                              { p=2*i+3;
                                      l=(p*p-3)/2;
                                      if (l>k) break;
                                      for (j=l; j<k; j+=p) prime.clear(j);
                                      // streicht p*p,p*(p+2), etc.
                              }
                      }
              }

      }
      !

      /opt/jdk1.4.2/bin/java_g -server -XX:-GenerateCompilerNullChecks SieveBits
      VM option '-GenerateCompilerNullChecks'
      Counting primes up to 99999999.
      # To suppress the following error report, specify this argument
      # after -XX: or in .hotspotrc: SuppressErrorAt=/parse3.cpp:80
      #
      # HotSpot Virtual Machine Error, assertion failure
      # Please report this error at
      # http://java.sun.com/cgi-bin/bugreport.cgi
      #
      # Java VM: Java HotSpot(TM) Server VM (1.4.2-b28-debug mixed mode)
      #
      # assert(_gvn.type(obj)->higher_equal(tjp), "cast_up is no longer needed")
      #
      # Error ID: /export1/jdk/jdk1.4.2/hotspot/src/share/vm/opto/parse3.cpp, 80 [ Patched ]
      #
      # Problematic Thread: prio=5 tid=0x00120780 nid=0xa runnable
      #

      Heap at VM Abort:
      Heap
       def new generation total 2112K, used 0K [0xf0800000, 0xf0a20000, 0xf1d50000)
        eden space 2048K, 0% used [0xf0800000, 0xf0800000, 0xf0a00000)
        from space 64K, 0% used [0xf0a10000, 0xf0a10000, 0xf0a20000)
        to space 64K, 0% used [0xf0a00000, 0xf0a00000, 0xf0a10000)
       tenured generation total 7512K, used 6186K [0xf1d50000, 0xf24a6000, 0xf4800000)
         the space 7512K, 82% used [0xf1d50000, 0xf235a948, 0xf235aa00, 0xf24a6000)
       compacting perm gen total 16384K, used 1043K [0xf4800000, 0xf5800000, 0xf8800000)
         the space 16384K, 6% used [0xf4800000, 0xf4904f18, 0xf4905000, 0xf5800000)
      Dumping core....
      Abort (core dumped)
      (Incident Review ID: 228797)
      ======================================================================

            jrose John Rose
            ksoshals Kirill Soshalskiy (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: