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

java does not exit main when Panel is created

XMLWordPrintable

    • sparc
    • solaris_2.6

      The following simple class is a subclass of Panel. In the main
      program, I create the panel and exit from main. When I run
      this program, it hangs at the end and never exits.


      package echeck.ofx;

      import java.io.*;
      import java.util.*;
      import java.awt.event.*;
      import java.awt.*;

      public class OFXTester extends Panel
      {
          /**
           * Constructor initializes this object.
           */
          public OFXTester()
          {
          }


           public static void main(String [] args)
           {
              int active = Thread.activeCount();
              System.err.println("active = " + active);

              Thread[] threads = new Thread[active];
              Thread.enumerate(threads);
              System.err.println("before construction");
              for (int j=0; j<threads.length; j++) {
                 System.err.println(threads[j].toString());
              }

              System.err.println("doing nothing!!");
              OFXTester test = new OFXTester();

              active = Thread.activeCount();
              System.err.println("active = " + active);

              threads = new Thread[active];
              System.err.println("after contruction");
              Thread.enumerate(threads);
              for (int i=0; i<threads.length; i++) {
                 System.err.println(threads[i].toString());
              }

              System.err.println("done!!");
           }
      }



      The standard error for this program is given below. It includes a full dump of all the threads which is created when I hit "Ctrl-\" when the program is hanging.

      active = 1
      before construction
      Thread[main,5,main]
      doing nothing!!
      active = 4
      after contruction
      Thread[main,5,main]
      Thread[AWT-EventQueue-0,5,main]
      Thread[AWT-Input,5,main]
      Thread[AWT-Motif,5,main]
      done!!
      SIGQUIT 3* quit

      Full thread dump:
          "AWT-Motif" (TID:0xee308748, sys_thread_t:0x1d6b00, state:CW) prio=5
              at java.lang.Object.wait(Native Method)
              at sun.awt.motif.MToolkit.run(Native Method)
              at java.lang.Thread.run(Thread.java:490)
          "AWT-Input" (TID:0xee308770, sys_thread_t:0x1cdde0, state:CW) prio=5
              at sun.awt.motif.InputThread.run(Native Method)
          "AWT-EventQueue-0" (TID:0xee308578, sys_thread_t:0x1b4c70, state:CW) prio=5
              at java.lang.Object.wait(Native Method)
              at java.lang.Object.wait(Object.java:315)
              at java.awt.EventQueue.getNextEvent(EventQueue.java:122)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:44)
          "SoftReference sweeper" (TID:0xee3046c8, sys_thread_t:0x89528, state:CW) prio=9
              at java.lang.Object.wait(Native Method)
              at java.lang.Object.wait(Object.java:315)
              at java.lang.Runtime.waitForMemoryAdvice(Runtime.java:569)
              at java.lang.ref.SoftReference$Sweeper.run(SoftReference.java:524)
              at java.lang.Thread.run(Thread.java:490)
          "Finalizer" (TID:0xee300318, sys_thread_t:0x682a0, state:CW) prio=8
              at java.lang.Object.wait(Native Method)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:107)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:122)
              at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:127)
          "Reference handler" (TID:0xee3003c8, sys_thread_t:0x584b8, state:CW) prio=10
              at java.lang.Object.wait(Native Method)
              at java.lang.Object.wait(Object.java:315)
              at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:186)
          "Async Garbage Collector" (TID:0xee3001b0, sys_thread_t:0x61160, state:CW) prio=1
          "Idle thread" (TID:0xee3001f8, sys_thread_t:0x58910, state:R) prio=0 *current thr
      ead*
          "Clock" (TID:0xee3002d0, sys_thread_t:0x587e8, state:CW) prio=12
          "main" (TID:0xee300038, stillborn) : <thread not active>
      Monitor Cache Dump:
      Registered Monitor Dump:
          utf8 hash table: <unowned>
          JNI pinning lock: <unowned>
          JNI global reference lock: <unowned>
          BinClass lock: <unowned>
          Class linking lock: <unowned>
          System class loader lock: <unowned>
          Code rewrite lock: <unowned>
          Heap lock: <unowned>
          Monitor IO lock: <unowned>
          Child death monitor: <unowned>
          Event monitor: <unowned>
          I/O monitor: <unowned>
              Waiting to be notified:
                  "AWT-Input" (0x1cdde0)
          Alarm monitor: <unowned>
              Waiting to be notified:
                  "Clock" (0x587e8)
          Sbrk lock: <unowned>
          Thread queue lock: <unowned>
              Waiting to be notified:
                  "main" (0x0)
          Monitor registry: owner "Idle thread" (0x58910, 1 entry)
      Thread Alarm Q:
          sys_thread_t 0x1cdde0 [Timeout in 104 ms]
          sys_thread_t 0x61160 [Timeout in 235 ms]

            dmendenhsunw David Mendenhall (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: