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

ClassCastException at SunToolkit.postEvent

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P1 P1
    • 5.0
    • 5.0
    • client-libs
    • tiger
    • x86, sparc
    • linux, solaris_10, windows_nt



      Name: dmR10075 Date: 08/21/2003


      Run one of the test cases. They perform some stress testing, at the
      middle of it ClassCastException occurs. There were catched two
      exceptions so far:
      java.lang.ClassCastException: java.awt.DefaultKeyboardFocusManager
              at sun.awt.SunToolkit.postEvent(SunToolkit.java:494)
              at sun.awt.X11.XWindow.postEvent(XWindow.java:303)
              at sun.awt.X11.XWindow.postEventToEventQueue(XWindow.java:312)
              at sun.awt.X11.XWindow.handleExposeEvent(XWindow.java:407)
              at sun.awt.X11.XBaseWindow.dispatchEvent(XBaseWindow.java:764)
              at
      sun.awt.X11.XBaseWindow.dispatchToWindow(XBaseWindow.java:745)
              at sun.awt.X11.XToolkit.dispatchEvent(XToolkit.java:375)
              at sun.awt.X11.XToolkit.run(XToolkit.java:463)
              at sun.awt.X11.XToolkit.run(XToolkit.java:419)
              at java.lang.Thread.run(Thread.java:549)
       java.lang.ClassCastException: sun.awt.PostEventQueue
             at
      sun.awt.SunToolkit.getSystemEventQueueImplPP(SunToolkit.java:703)
              at
      sun.awt.SunToolkit.getSystemEventQueueImpl(SunToolkit.java:697)
              at java.awt.Toolkit.getEventQueue(Toolkit.java:1539)
              at java.awt.EventQueue.isDispatchThread(EventQueue.java:656)
              at java.awt.EventQueue.invokeAndWait(EventQueue.java:821)
              at java.awt.Window.dispose(Window.java:587)
              at MemLeakTest.main(MemLeakTest.java:16)

      The problem happens with latest Tiger build, I tried b14-b15.

      Test cases:
      import java.awt.*;

      public class MemLeakTest {

          public static void main(String[] str)
              throws Exception
          {
              for (int i=0; i<10000; i++) {
                  Frame f = new Frame();
                  TestDialog d = new TestDialog(f);
                  
                  f.addNotify(); // Create peer

                  // No child, no parent will be disposed here,
                  // but parent will be schuduled to dispose
                  f.dispose();

                  // Child will try to dispose parent coz he is scheduled
                  d.kill();
                  
                  System.err.println("Test: iter=" + i);
              }
          }
      }

      class TestDialog extends Dialog {
          TestDialog(Frame f) {
              super(f);
          }
          public void kill() {
              super.dispose();
          }
          public void dispose() {
              hide();
          }
      }
      ------------------------------------
      import java.awt.*;
       
      public class Test {
          public static void main(String [] args) {
              Point p;
              Frame frame = new Frame();
              frame.setBounds(100,100,100,100);
              ScrollPane sp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
              Canvas canvas = new Canvas();
              canvas.setSize(300,300);
              sp.add(canvas);
              frame.add("Center",sp);
              frame.setVisible(true);
               
              for (int i=0;i<1000;i++) {
                  p = new Point(i%100,i%100);
                  sp.setScrollPosition(p);
                  if (!sp.getScrollPosition().equals(p)) {
                      System.out.println("Test Failed.");
                      System.out.println(i+" : Expected "+p+", but Returned:
      "+sp.getScrollPosition());
                      frame.dispose();
                      System.exit(0);
                  }
              }
              System.out.println("Test Passed.");
              frame.dispose();
          }
      }

      ======================================================================

            dmikhalksunw Denis Mikhalkin (Inactive)
            domsunw Dom Dom (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: