JDK-4222359 : Infinite recursion crashes jvm
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 1.2.0
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 1999-03-20
  • Updated: 1999-04-09
  • Resolved: 1999-04-09
Related Reports
Duplicate :  
Description

Name: vi73552			Date: 03/20/99


import java.io.*;
import java.net.*;

/**
   The following code results in an endless recursive loop. However, it
   doesn't produce a StackOverflowError as you would expect, and crashes
   the JVM.

   javac bug.java ; java -Djava.compiler=NONE bug 

   In addition, it causes the following error in the symantec JIT when it
   is enabled:

   A nonfatal internal JIT (3.00.078(x)) error 'Structured Exception(c00000fd)' has occurred in :
   'bug$M.m ()V': Interpreting method.
   Please report this error in detail to http://java.sun.com/cgi-bin/bugreport.cgi

*/

//----------------------------------------------------------------------------

public final class bug
{
   public static void main(String args[])
   {
      System.out.println("main called");
      System.out.flush();

      if (System.getSecurityManager()!=null)
      {
         System.out.println("Can't set security manager");
         System.exit(-1);
      }
      
      System.setSecurityManager(new M());

      System.out.println("#args="+args.length);
      System.out.flush();
   }

   private static final class M extends SecurityManager
   {
      private synchronized void m()
      {
         System.out.println("getting call stack...");
         System.out.flush();

         Class[] s=getClassContext();

         for (int i=0 ; i<s.length ; i++)
         {
            System.out.print("s["+i+"]="+s[i].getName());
            System.out.flush();
         }
      }

      public void checkCreateClassLoader()                            {} 
      public void checkAccess(Thread g)                               {}
      public void checkAccess(ThreadGroup g)                          {}
      public void checkExit(int status)                               {}
      public void checkExec(String cmd)                               {}
      public void checkLink(String lib)                               {}
      public void checkRead(FileDescriptor fd)                        {}
      public void checkRead(String file)                              {}
      public void checkRead(String file, Object context)              {}
      public void checkWrite(FileDescriptor fd)                       {}
      public void checkWrite(String file)                             {}
      public void checkDelete(String file)                            {}
      public void checkConnect(String host, int port)                 {}
      public void checkConnect(String host, int port, Object context) {}
      public void checkListen(int port)                               {}
      public void checkAccept(String host, int port)                  {}
      public void checkMulticast(InetAddress maddr)                   {}
      public void checkMulticast(InetAddress maddr, byte ttl)         {}
      public void checkPropertiesAccess()                             {}
      public void checkPropertyAccess(String key)                     {}
      public void checkPropertyAccess(String key, String def)         {}
      public boolean checkTopLevelWindow(Object window)               { return true; }
      public void checkPrintJobAccess()                               {}
      public void checkSystemClipboardAccess()                        {}
      public void checkAwtEventQueueAccess()                          {}
      public void checkSetFactory()                                   {}
      public void checkPackageDefinition(String pkg)                  {}
      public void checkSecurityAccess(String provider)                {}
      public void checkMemberAccess(Class clazz, int which)           {}

      public void checkPackageAccess(String pkg)                      { m(); }
   }
}
(Review ID: 55841) 
======================================================================