You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Gregory Shimansky (JIRA)" <ji...@apache.org> on 2007/06/15 12:55:26 UTC

[jira] Updated: (HARMONY-4158) [drlvm][thread] VM sometimes throws unexpected InternalError on Thread.suspend() method invocation

     [ https://issues.apache.org/jira/browse/HARMONY-4158?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gregory Shimansky updated HARMONY-4158:
---------------------------------------

    Summary: [drlvm][thread] VM sometimes throws unexpected InternalError on Thread.suspend() method invocation  (was: [drlvm][thead] VM sometimes throws unexpected InternalError on Thread.suspend() method invocation)

> [drlvm][thread] VM sometimes throws unexpected InternalError on Thread.suspend() method invocation
> --------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-4158
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4158
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows
>            Reporter: Vera Petrashkova
>            Priority: Minor
>
> The following test demonstrates that VM throws unexpected java.lang.InternalError error 70025 on Thread.suspend() method invocation
> Sometimes VM hangs after this error.
> -----------------ThrSuspTest.java----------------------
> public class ThrSuspTest {
>     public static void main(String[] args) {
>         ThrRunner tt = new ThrRunner();
>         tt.start();
>         try {
>             Thread.sleep(20000);
>             tt.interrupt();
>         } catch (Throwable e) {
>              e.printStackTrace();
>         }
>         System.err.println("+++++++ThrSuspTest: finished");
>     }
> }
> class ThrRunner extends Thread {
>      public void run() {
>         th1_1 tt = new th1_1();
>         tt.setDaemon(true);
>         tt.start();
>         th2_1 tt2 = new th2_1();
>         tt2.setDaemon(true);
>         tt2.start();
>         th3_1 tt3 = new th3_1();
>         tt3.setDaemon(true);
>         tt3.start();
>         try {
>             Thread.sleep(10000);
>             System.err.println("After sleep");
>             tt.interrupt();
>         } catch(InterruptedException e) {
>         } catch (Throwable e) {
>              e.printStackTrace();
>         }
>         System.err.println("=======ThrRunner finished");
>         
>     }
> }
> class th1_1 extends Thread {
>     public void run() {
>         System.err.println("Start th1_1");
>         th1_2 aa = null;
>         while (true) {
>             try {
>                 aa = new th1_2();
>                 aa.start();
>                 aa.suspend();
>                 aa.resume();
>                 aa.interrupt();
>             } catch (OutOfMemoryError er) {
>             } catch (Throwable thr) {
>                   thr.printStackTrace();
>                 return;
>             }
>         }
>     }
> }
> class th1_2 extends Thread {
>     static int i = 0;
>     public void run() {
>         try {
>             while (true) {
>                 if (Thread.interrupted())
>                     break;
>                 this.i = 1;
>             }
>         } catch (Throwable thr) {
>             System.err.println("Unexpected:"+ thr);
>         }
>     }
> }
> class th2_1 extends Thread {
>     public void run() {
> System.err.println("Start th2_1");
>         while (true) {
>             try {
>                 new Thread().start();
>                 Thread.yield();
>             } catch (OutOfMemoryError er) {
>             } catch (Throwable thr) {
>                 System.err.println("Unexpected error in th2_1: "+thr);
>                 return;
>             }
>         }
>     }
> }
> class th3_1 extends Thread {
>     int objectSize;
>     public th3_1(int objectSize) {
>         this.objectSize = objectSize;
>     }
>     public th3_1() {
>         this.objectSize = 1000;
>     }
>     public void run() {
> System.err.println("Start th3_1");
>         while (true) {
>             try {
>                 new th3_2(objectSize);
>             } catch (OutOfMemoryError er) {
>             } catch (Throwable thr) {
>                 System.err.println("Unexpected error in th3_1: "+thr);
>                 return;            }
>         }
>     }
> }
> class th3_2 {
>     int testArray[];
>     public th3_2(int arraySize) {
>         int testArray[] = new int[arraySize];
>         this.testArray = testArray;
>     }
> }
> --------------------------------
> RI never throws InternalError on this test and it finishes corectly
> Output on RI:
> ============
> java version "1.5.0_06"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> Start th1_1
> Start th2_1
> Start th3_1
> After sleep
> =======ThrRunner finished
> +++++++ThrSuspTest: finished
> Output on DRLVM:
> =================
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its l
> icensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r546878, (Jun 13 2007), Windows/ia32/msvc 1310, release build
> http://harmony.apache.org
> Start th1_1
> Start th3_1
> Start th2_1
> The GC did not provide gc_add_weak_root_set_entry()
> java.lang.InternalError: Thread Manager internal error 70025
>         at java.lang.Thread.suspend(Thread.java:871)
>         at th1_1.run(ThrSuspTest.java:49)
> After sleep
> =======ThrRunner finished
> +++++++ThrSuspTest: finished
> This issue causes the intermittent failures of the stress.org.apache.harmony.test.stress.misc.stressloads tests from
> Stress test suite (http://issues.apache.org/jira/browse/HARMONY-3536)
> which use class as th1_1 from attached test.
> For example,
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest01.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest04.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest06.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest10.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest15.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest16.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest17.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest20.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest21.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest22.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest23.xml
> stress/org/apache/harmony/test/stress/misc/stressloads/tests/StressLoadsRunnerTest24.xml

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.