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

Deadlock in DefaultKeyboardFocusManager on Solaris

    Details

    • Subcomponent:
    • CPU:
      sparc
    • OS:
      solaris_8

      Description

      java version "1.4.0beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0beta-b40)
      Java HotSpot(TM) Client VM (build 1.4beta-B40, mixed mode)

      In the attached application, if you select the Quit submenu item from the popup menu (right click on the panel, select File -> Quit), the CPU is pegged and it appears that the AWT-EventQueue is blocked on an event.

      There is no way to kill the process except with kill -9.

      This may be related to the fact that focus policy on Solaris seem to be different from Windows. With the example application, on Solaris, the focus owner is the button. On Windows, the focus owner is null. You can set up a timer which report the focus owner every 2 seconds.

      60 [cerebus] menu_test % java MenuTest
      ^\Full thread dump:

      "TimerQueue" daemon prio=5 tid=0x167cd0 nid=0x10 waiting on monitor [f5401000..f54019e0]
              at java.lang.Object.wait(Native Method)
              at javax.swing.TimerQueue.run(TimerQueue.java:234)
              at java.lang.Thread.run(Thread.java:565)

      "Thread-0" prio=5 tid=0x28010 nid=0x1 runnable [0..ffbee348]

      "AWT-EventQueue-0" prio=6 tid=0x2274e0 nid=0xf waiting for monitor entry [f5300000..f53019e0]
              at sun.awt.motif.MComponentPeer.nativeHandleEvent(Native Method)
              at sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:362)
              at java.awt.Component.dispatchEventImpl(Component.java:2971)
              at java.awt.Container.dispatchEventImpl(Container.java:1310)
              at java.awt.Window.dispatchEventImpl(Window.java:1228)
              at java.awt.Component.dispatchEvent(Component.java:2765)
              at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1437)
              at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:667)
              at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:526)
              at java.awt.Component.dispatchEventImpl(Component.java:2789)
              at java.awt.Container.dispatchEventImpl(Container.java:1310)
              at java.awt.Window.dispatchEventImpl(Window.java:1228)
              at java.awt.Component.dispatchEvent(Component.java:2765)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:423)
              at java.awt.SequencedEvent.dispatch(SequencedEvent.java:96)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:421)
              at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:140)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:126)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:121)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)

      "AWT-Shutdown" prio=6 tid=0x229888 nid=0xe waiting on monitor [f5601000..f56019e0]
              at java.lang.Object.wait(Native Method)
              at java.lang.Object.wait(Object.java:425)
              at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:262)
              at java.lang.Thread.run(Thread.java:565)

      "AWT-Motif" daemon prio=6 tid=0x21a798 nid=0xc runnable [f5501000..f55019e0]
              at sun.awt.motif.MToolkit.run(Native Method)
              at java.lang.Thread.run(Thread.java:565)

      "Signal Dispatcher" daemon prio=10 tid=0x32ca8 nid=0x9 runnable [0..0]

      "Finalizer" daemon prio=8 tid=0x30eb8 nid=0x7 waiting on monitor [f5f81000..f5f819e0]
              at java.lang.Object.wait(Native Method)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:126)
              at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:162)

      "Reference Handler" daemon prio=10 tid=0x2f598 nid=0x6 waiting on monitor [fc181000..fc1819e0]
              at java.lang.Object.wait(Native Method)
              at java.lang.Object.wait(Object.java:425)
              at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:110)

      "VM Thread" prio=5 tid=0x2b188 nid=0x4 runnable

      "VM Periodic Task Thread" prio=10 tid=0x32bb8 nid=0x8 runnable

        Attachments

          Activity

            People

            • Assignee:
              dmendenhsunw David Mendenhall (Inactive)
              Reporter:
              mdavidsosunw Mark Davidson (Inactive)
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Imported:
                Indexed: