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

AbstractTableModel.fireTableRowsInserted event problem (RepaintManager deadlock)

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P2 P2
    • None
    • 1.4.2_03
    • client-libs
    • None

      The problem has occurred when we migrated our LSMS Java GUI from Java 1.3
      to 1.4.2.
      Symptom: The GUI display is greying out after different time periods. Gui
      could be functional from 5 to 30 minutes.

      Problem area:
      We have a table derived from AbstractTableModel. The GUI displays messages
      in a tabular format. The messages (events) arrive and are displayed in a
      table.
      We call
      fireTableRowsInserted(startRow, endRow);
      and this call is not returning. There is a deadlock in the Swing library
      see attached stack dump.


      lsmspri% kill -QUIT 16048 > javaLock.txt
      lsmspri% Full thread dump Java HotSpot(TM) Client VM (1.4.2_03-b02 mixed mode):

      "DestroyJavaVM" prio=5 tid=0x0002cfd0 nid=0x1 waiting on condition [0..ffbee3e0]

      "localServicesComms" daemon prio=5 tid=0x001c5010 nid=0x13 runnable [f0b00000..f0b019c8]
              at java.net.SocketInputStream.socketRead0(Native Method)
              at java.net.SocketInputStream.read(SocketInputStream.java:129)
              at com.sun.net.ssl.internal.ssl.InputRecord.a(DashoA6275)
              at com.sun.net.ssl.internal.ssl.InputRecord.read(DashoA6275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
              - locked <0xf20cc620> (a java.lang.Object)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
              at com.sun.net.ssl.internal.ssl.AppInputStream.read(DashoA6275)
              - locked <0xf20cc6a8> (a com.sun.net.ssl.internal.ssl.AppInputStream)
              at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:408)
              at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:450)
              at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182)
              - locked <0xf20ce728> (a java.io.InputStreamReader)
              at java.io.InputStreamReader.read(InputStreamReader.java:167)
              at com.tekelec.lsms.xml.XmlClient.receive(XmlClient.java:222)
              at com.tekelec.lsms.xml.XmlClient.readMessage(XmlClient.java:371)
              at com.tekelec.lsms.util.LsmsServerCommunications.doWork(LsmsServerCommunications.java:217)
              at com.tekelec.lsms.util.LsmsServerCommunications.access$600(LsmsServerCommunications.java:41)
              at com.tekelec.lsms.util.LsmsServerCommunications$1.run(LsmsServerCommunications.java:147)
              at java.lang.Thread.run(Thread.java:534)

      "TimerQueue" daemon prio=5 tid=0x0037baf8 nid=0x12 in Object.wait() [f0701000..f07019c8]
              at java.lang.Object.wait(Native Method)
              - waiting on <0xf1e748b8> (a javax.swing.TimerQueue)
              at javax.swing.TimerQueue.run(TimerQueue.java:231)
              - locked <0xf1e748b8> (a javax.swing.TimerQueue)
              at java.lang.Thread.run(Thread.java:534)

      "supDBComms" daemon prio=5 tid=0x001531e0 nid=0x11 waiting for monitor entry [f0801000..f08019c8]
              at javax.swing.RepaintManager.addDirtyRegion(RepaintManager.java:234)
              - waiting to lock <0xf1b23188> (a javax.swing.RepaintManager)
              at javax.swing.JComponent.repaint(JComponent.java:4334)
              at javax.swing.JComponent.repaint(JComponent.java:4348)
              at javax.swing.JTable.tableRowsInserted(JTable.java:2947)
              at javax.swing.JTable.tableChanged(JTable.java:2869)
              at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
              at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:215)
              at com.tekelec.lsms.gui.helpers.NotificationTableModel.addRow(NotificationTableModel.java:208)
              at com.tekelec.lsms.gui.LSMSConsole.addNotification(LSMSConsole.java:4507)
              - locked <0xf1b9c468> (a com.tekelec.lsms.gui.LSMSConsole)
              at com.tekelec.lsms.gui.LSMSConsole.messageReceived(LSMSConsole.java:3039)
              at com.tekelec.lsms.util.LsmsServerCommunications.notifyXmlMessageReceived(LsmsServerCommunications.java:381)
              at com.tekelec.lsms.util.LsmsServerCommunications.doWork(LsmsServerCommunications.java:292)
              at com.tekelec.lsms.util.LsmsServerCommunications.access$600(LsmsServerCommunications.java:41)
              at com.tekelec.lsms.util.LsmsServerCommunications$1.run(LsmsServerCommunications.java:147)
              at java.lang.Thread.run(Thread.java:534)

      "AWT-EventQueue-0" prio=6 tid=0x001b5aa8 nid=0x10 waiting for monitor entry [f0900000..f09019c8]
              at java.awt.Frame.getExtendedState(Frame.java:734)
              - waiting to lock <0xf1b9c468> (a com.tekelec.lsms.gui.LSMSConsole)
              at javax.swing.RepaintManager.addDirtyRegion(RepaintManager.java:265)
              - locked <0xf1b23188> (a javax.swing.RepaintManager)
              at javax.swing.JComponent.repaint(JComponent.java:4334)
              at javax.swing.JViewport.repaint(JViewport.java:1360)
              at java.awt.Component.repaint(Component.java:2451)
              at java.awt.Component.reshape(Component.java:1764)
              - locked <0xf1ba0b20> (a java.awt.Component$AWTTreeLock)
              at javax.swing.JComponent.reshape(JComponent.java:3520)
              at java.awt.Component.setBounds(Component.java:1664)
              at java.awt.Component.resize(Component.java:1601)
              at java.awt.Component.setSize(Component.java:1593)
              at java.awt.Component.resize(Component.java:1622)
              at java.awt.Component.setSize(Component.java:1614)
              at javax.swing.JViewport.setViewSize(JViewport.java:1007)
              at javax.swing.ViewportLayout.layoutContainer(ViewportLayout.java:180)
              at java.awt.Container.layout(Container.java:1020)
              at java.awt.Container.doLayout(Container.java:1010)
              at java.awt.Container.validateTree(Container.java:1092)
              at java.awt.Container.validateTree(Container.java:1099)
              at java.awt.Container.validate(Container.java:1067)
              - locked <0xf1ba0b20> (a java.awt.Component$AWTTreeLock)
              at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:353)
              at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:116)
              at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
              at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
              at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

      "AWT-Shutdown" prio=5 tid=0x001b58d0 nid=0xf in Object.wait() [f0d01000..f0d019c8]
              at java.lang.Object.wait(Native Method)
              - waiting on <0xf1b9c860> (a java.lang.Object)
              at java.lang.Object.wait(Object.java:429)
              at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
              - locked <0xf1b9c860> (a java.lang.Object)
              at java.lang.Thread.run(Thread.java:534)

      "Java2D Disposer" daemon prio=10 tid=0x001a6f10 nid=0xe in Object.wait() [f0a01000..f0a019c8]
              at java.lang.Object.wait(Native Method)
              - waiting on <0xf1b9c8d0> (a java.lang.ref.ReferenceQueue$Lock)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
              - locked <0xf1b9c8d0> (a java.lang.ref.ReferenceQueue$Lock)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
              at sun.java2d.Disposer.run(Disposer.java:100)
              at java.lang.Thread.run(Thread.java:534)

      "AWT-Motif" daemon prio=6 tid=0x0013ed80 nid=0xc runnable [f0c01000..f0c019c8]
              at sun.awt.motif.MToolkit.run(Native Method)
              at java.lang.Thread.run(Thread.java:534)

      "Signal Dispatcher" daemon prio=10 tid=0x000c2dc0 nid=0x8 waiting on condition [0..0]

      "Finalizer" daemon prio=8 tid=0x000beb18 nid=0x6 in Object.wait() [fc381000..fc3819c8]
              at java.lang.Object.wait(Native Method)
              - waiting on <0xf1b9ca78> (a java.lang.ref.ReferenceQueue$Lock)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
              - locked <0xf1b9ca78> (a java.lang.ref.ReferenceQueue$Lock)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
              at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

      "Reference Handler" daemon prio=10 tid=0x000bd1b8 nid=0x5 in Object.wait() [fde81000..fde819c8]
              at java.lang.Object.wait(Native Method)
              - waiting on <0xf1b9cae0> (a java.lang.ref.Reference$Lock)
              at java.lang.Object.wait(Object.java:429)
              at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
              - locked <0xf1b9cae0> (a java.lang.ref.Reference$Lock)

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

      "VM Periodic Task Thread" prio=10 tid=0x000c4a10 nid=0xa waiting on condition
      "Suspend Checker Thread" prio=10 tid=0x000c2458 nid=0x7 runnable

      Found one Java-level deadlock:
      =============================
      "supDBComms":
        waiting to lock monitor 0x000bdf08 (object 0xf1b23188, a javax.swing.RepaintManager),
        which is held by "AWT-EventQueue-0"
      "AWT-EventQueue-0":
        waiting to lock monitor 0x000bde60 (object 0xf1b9c468, a com.tekelec.lsms.gui.LSMSConsole),
        which is held by "supDBComms"

      Java stack information for the threads listed above:
      ===================================================
      "supDBComms":
              at javax.swing.RepaintManager.addDirtyRegion(RepaintManager.java:234)
              - waiting to lock <0xf1b23188> (a javax.swing.RepaintManager)
              at javax.swing.JComponent.repaint(JComponent.java:4334)
              at javax.swing.JComponent.repaint(JComponent.java:4348)
              at javax.swing.JTable.tableRowsInserted(JTable.java:2947)
              at javax.swing.JTable.tableChanged(JTable.java:2869)
              at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
              at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:215)
              at com.tekelec.lsms.gui.helpers.NotificationTableModel.addRow(NotificationTableModel.java:208)
              at com.tekelec.lsms.gui.LSMSConsole.addNotification(LSMSConsole.java:4507)
              - locked <0xf1b9c468> (a com.tekelec.lsms.gui.LSMSConsole)
              at com.tekelec.lsms.gui.LSMSConsole.messageReceived(LSMSConsole.java:3039)
              at com.tekelec.lsms.util.LsmsServerCommunications.notifyXmlMessageReceived(LsmsServerCommunications.java:381)
              at com.tekelec.lsms.util.LsmsServerCommunications.doWork(LsmsServerCommunications.java:292)
              at com.tekelec.lsms.util.LsmsServerCommunications.access$600(LsmsServerCommunications.java:41)
              at com.tekelec.lsms.util.LsmsServerCommunications$1.run(LsmsServerCommunications.java:147)
              at java.lang.Thread.run(Thread.java:534)
      "AWT-EventQueue-0":
              at java.awt.Frame.getExtendedState(Frame.java:734)
              - waiting to lock <0xf1b9c468> (a com.tekelec.lsms.gui.LSMSConsole)
              at javax.swing.RepaintManager.addDirtyRegion(RepaintManager.java:265)
              - locked <0xf1b23188> (a javax.swing.RepaintManager)
              at javax.swing.JComponent.repaint(JComponent.java:4334)
              at javax.swing.JViewport.repaint(JViewport.java:1360)
              at java.awt.Component.repaint(Component.java:2451)
              at java.awt.Component.reshape(Component.java:1764)
              - locked <0xf1ba0b20> (a java.awt.Component$AWTTreeLock)
              at javax.swing.JComponent.reshape(JComponent.java:3520)
              at java.awt.Component.setBounds(Component.java:1664)
              at java.awt.Component.resize(Component.java:1601)
              at java.awt.Component.setSize(Component.java:1593)
              at java.awt.Component.resize(Component.java:1622)
              at java.awt.Component.setSize(Component.java:1614)
              at javax.swing.JViewport.setViewSize(JViewport.java:1007)
              at javax.swing.ViewportLayout.layoutContainer(ViewportLayout.java:180)
              at java.awt.Container.layout(Container.java:1020)
              at java.awt.Container.doLayout(Container.java:1010)
              at java.awt.Container.validateTree(Container.java:1092)
              at java.awt.Container.validateTree(Container.java:1099)
              at java.awt.Container.validate(Container.java:1067)
              - locked <0xf1ba0b20> (a java.awt.Component$AWTTreeLock)
              at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:353)
              at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:116)
              at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
              at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
              at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

      Found 1 deadlock.

            svioletsunw Scott Violet (Inactive)
            psoper Pete Soper (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: