JDK-4483183 : BugId4293527T2 - Memory fault error on suse linux
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 1.4.0
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: linux_2.2
  • CPU: x86
  • Submitted: 2001-07-23
  • Updated: 2001-07-26
  • Resolved: 2001-07-26
Related Reports
Duplicate :  
Relates :  
Description
Install Merlin build 72 on suse linux 6.4:
When I compile and run following testcase , returns memory fault.
*****************************TESTCASE*******************************

 public class BugId4293527T2 implements Runnable {
    private static int stackSize =0;
    private static int recursiveDepth =Integer.MAX_VALUE;
  
    private static int noOfThreads = 1;
    
    private static ThreadGroup group = new ThreadGroup("");
    
    Thread [] thread = new Thread[noOfThreads];
    private boolean stackError = false;
    private boolean memoryError = false;
   
   
    public static void main(String[] args) throws Exception {
        BugId4293527T2 bugId4293527 = new BugId4293527T2();
        
        boolean status[];  
        int passcount = 0, failcount = 0;
        int numTests = 1;
        int i, j = 0;    
    
        status = new boolean[numTests];
        System.out.println("Total tests for Exec : "+numTests);

        for(i = 0; i < numTests; ++i) {
                // Put all tests in try... catch block
            try {
                    ++j;
                    switch (j) {
                            case 1:
                                status[i] = bugId4293527.BugId4293527T23Test01()
;;
                            break;
                        }
            
                } catch (Exception e) {
                status[i] = false;
                        System.out.println ("Exception in test "+j+": "+e.getMes
sage());
                        e.printStackTrace(); 
            }
        } // end for

        // Get pass and fail totals
        for(i = 0; i < numTests; ++i) {
            if (status[i] == true)
                   passcount++;
                else
                   failcount++;
        }
    
        System.out.println("Pass count: " + passcount);  
        System.out.println("Fail count: " + failcount);  

        // check if tests passed
        if ( failcount < 1 ) {
           System.out.println("Test for BugId4293527T2.java Passed");
           TestHelper.exit(0);
        } else {
           System.out.println("Test for BugId4293527T2.java Failed");
           TestHelper.exit(1);
        }
        
     } // end main
   
    
     public  boolean BugId4293527T23Test01() {
           boolean bReturn = false;
                 
           for (int i =0; i <noOfThreads; i++) {
               String name = "threadTest" + i;
               thread[i] = new Thread(group, this,name,stackSize);
               thread[i].start();
                  
           }
             
           for (int j =0; j <noOfThreads; j++) {
               while(thread[j].isAlive()){;}
              // System.out.println("Thread.activeCount = " + Thread.activeCount
());
           }
              
          System.out.println("Threads activeCount = " + Thread.activeCount());
          
          if (stackError) {
            bReturn = true;
            System.out.println("StackOverflowError occured");
            System.out.println("BugId4293527T23Test01() Pass");
            return bReturn;
          }
          bReturn = false;
          System.out.println("BugId4293527T23Test01() Fail");
          return bReturn;
     }
 
     public void run() {
        if (recursive(1)==1) {
            return;
        }
        
   
    }
   int recursive(int i) {
        i = i +1;
       try { 
           if (i <recursiveDepth) {
              recursive(i);
           }
            //stackError = false;
       } catch(StackOverflowError sofle) {
           //System.out.println("Thread.activeCount = " + Thread.activeCount() +
 "  recursiveDepth = " +recursiveDepth + " i = " + i + "  stackSize = " + stackS
ize + " " + sofle);
           stackError = true;
           return 1;
       } catch(OutOfMemoryError oome) {
           memoryError = true;
           return 1;
       }
      
       return 0;
    }
 }
******************************************************************
when I run the above program.
#java BugId4293527T2
#Total Test of Exec:1
#memory fault

Comments
EVALUATION There are known issues with SuSE 6.4 (see bug 4345034) which only got fixed in later releases. 4345034 contains a workaround provided by SuSE team. Also please see bug 4466587 on discussions about a glibc bug that will affect SuSE 7.x and workarounds. hui.huang@Eng 2001-07-26
26-07-2001