First Last Prev Next    No search results available
Details
: Problems with Stripchart Display in ITOS
Bug#: 508
:
: ITOS
: Java pages
Status: CLOSED
Resolution: FIXED
: PC 32-bit
: RedHat EL 3
: 7-6 Patch 3
: P1
: routine
: Release 7-7 Patch 1

:
:
: LRO
:
:
  Show dependency tree - Show dependency graph
People
Reporter: Warren W. Thompson <wthompson@hammers.com>
Assigned To: Warren W. Thompson <wthompson@hammers.com>
: itos programmers <itos-devel@itos.gsfc.nasa.gov>

Attachments


Note

You need to log in before you can comment on or make changes to this bug.

Related actions
Votes: 0


Description:   Opened: 2007-12-13 18:03
Samuel Fix from APL has encountered the following issue:

I'm having issues with some display pages I've created with "makepage". 
When I display a "good" one, I get a bunch of "FPBean got a bad value:
null" errors in the log, but the display page still comes up.  When I
display a "bad" one, I get nothing but the "STOL_ECHO: FIFO: page..."
message.  From then on, I cannot display any new pages with the ".disp"
extension.  The good one is the "tx_volt_plots.disp" and the bad one is
"tx_volt2_plots.disp".  I have also attached the log file.
------- Comment #1 From Warren W. Thompson 2007-12-13 18:04:22 -------
It is possible to reproduce a hang on RHEL 5 running ITOS 7-6 patch 3. Here is
a trace of the JVM showing that a deadlock has occurred:

Full thread dump Java HotSpot(TM) Client VM (1.6.0_02-b05 mixed mode):

"JDWP Command Reader" daemon prio=10 tid=0x08619c00 nid=0x18c4 runnable
[0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"JDWP Transport Listener: dt_socket" daemon prio=10 tid=0x08384c00 nid=0x18c2
runnable [0x00000000..0xacc17ec0]
   java.lang.Thread.State: RUNNABLE

"FPBean ConsumerDisplayThread" prio=10 tid=0x08639000 nid=0x18bb in
Object.wait() [0xacbc6000..0xacbc7030]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xadd60210> (a ITOS.javadisplay.lib.VarQueue)
        at java.lang.Object.wait(Object.java:485)
        at
ITOS.javadisplay.lib.ConsumerDisplayThread.run(ConsumerDisplayThread.java:84)
        - locked <0xadd60210> (a ITOS.javadisplay.lib.VarQueue)

"Thread-8" prio=10 tid=0x08634c00 nid=0x18ba waiting for monitor entry
[0xacb75000..0xacb75eb0]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at ITOS.javadisplay.fp.FastPlot.resizePanels(FastPlot.java:625)
        - waiting to lock <0xadd60240> (a ITOS.javadisplay.fp.PlotPanel)
        at ITOS.javadisplay.fp.FastPlot.doResize(FastPlot.java:680)
        at ITOS.javadisplay.fp.FastPlot.setBounds(FastPlot.java:672)
        at java.awt.BorderLayout.layoutContainer(BorderLayout.java:821)
        - locked <0xae179d18> (a java.awt.Component$AWTTreeLock)
        at java.awt.Container.layout(Container.java:1432)
        at java.awt.Container.doLayout(Container.java:1421)
        at java.awt.Container.validateTree(Container.java:1519)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validate(Container.java:1491)
        - locked <0xae179d18> (a java.awt.Component$AWTTreeLock)
        at ITOS.javadisplay.beans.ShowBeanBox.startup(ShowBeanBox.java:503)
        at ITOS.javadisplay.beans.ShowBeanBox.run(ShowBeanBox.java:382)
        at java.lang.Thread.run(Thread.java:619)

"FPBean ConsumerDisplayThread" prio=10 tid=0x084ea400 nid=0x18b7 in
Object.wait() [0xac98f000..0xac98fdb0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xae304b50> (a ITOS.javadisplay.lib.VarQueue)
        at java.lang.Object.wait(Object.java:485)
        at
ITOS.javadisplay.lib.ConsumerDisplayThread.run(ConsumerDisplayThread.java:84)
        - locked <0xae304b50> (a ITOS.javadisplay.lib.VarQueue)

"FPBean ConsumerDisplayThread" prio=10 tid=0x084ee000 nid=0x18b6 in
Object.wait() [0xac9e0000..0xac9e0e30]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xae2e6520> (a ITOS.javadisplay.lib.VarQueue)
        at java.lang.Object.wait(Object.java:485)
        at
ITOS.javadisplay.lib.ConsumerDisplayThread.run(ConsumerDisplayThread.java:84)
        - locked <0xae2e6520> (a ITOS.javadisplay.lib.VarQueue)

"Thread-4" prio=10 tid=0x084b0000 nid=0x18b5 runnable [0xaca31000..0xaca320b0]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
        - locked <0xae2c89c8> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        - locked <0xae2c89c8> (a java.io.InputStreamReader)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at
ITOS.javadisplay.lib.DataSource$DPSThread.getNextMsg(DataSource.java:1187)
        at ITOS.javadisplay.lib.DataSource$DPSThread.run(DataSource.java:1120)

"Thread-3" prio=10 tid=0x08489800 nid=0x18b4 in Object.wait()
[0xaca82000..0xaca83130]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xae28d1a8> (a ITOS.javadisplay.lib.DataSource$ValueQ)
        at java.lang.Object.wait(Object.java:485)
        at ITOS.javadisplay.lib.DataSource$QThread.run(DataSource.java:857)
        - locked <0xae28d1a8> (a ITOS.javadisplay.lib.DataSource$ValueQ)

"AWT-EventQueue-0" prio=10 tid=0x085e8400 nid=0x18b3 waiting for monitor entry
[0xacad3000..0xacad3fb0]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at java.awt.Component.setFont(Component.java:1633)
        - waiting to lock <0xae179d18> (a java.awt.Component$AWTTreeLock)
        at java.awt.Container.setFont(Container.java:1571)
        at ITOS.javadisplay.fp.PlotPanel.initialize(FastPlot.java:1123)
        at ITOS.javadisplay.fp.FastPlot.reinitialize(FastPlot.java:441)
        at ITOS.javadisplay.fp.FastPlot.resizePanels(FastPlot.java:628)
        - locked <0xadd60240> (a ITOS.javadisplay.fp.PlotPanel)
        at ITOS.javadisplay.fp.FastPlot.doResize(FastPlot.java:680)
        at ITOS.javadisplay.fp.FastPlot.componentResized(FastPlot.java:662)
        at java.awt.Component.processComponentEvent(Component.java:5864)
        at java.awt.Component.processEvent(Component.java:5818)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

"AWT-Shutdown" prio=10 tid=0x085e6400 nid=0x18b2 in Object.wait()
[0xacb24000..0xacb25030]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xae184d10> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:485)
        at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
        - locked <0xae184d10> (a java.lang.Object)
        at java.lang.Thread.run(Thread.java:619)

"AWT-XAWT" daemon prio=10 tid=0x08689400 nid=0x18a7 runnable
[0xad3c2000..0xad3c30b0]
   java.lang.Thread.State: RUNNABLE
        at sun.awt.X11.XToolkit.waitForEvents(Native Method)
        at sun.awt.X11.XToolkit.run(XToolkit.java:544)
        at sun.awt.X11.XToolkit.run(XToolkit.java:519)
        at java.lang.Thread.run(Thread.java:619)

"Java2D Disposer" daemon prio=10 tid=0x08650000 nid=0x18a6 in Object.wait()
[0xad41b000..0xad41c130]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xae1c0ec0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0xae1c0ec0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at sun.java2d.Disposer.run(Disposer.java:125)
        at java.lang.Thread.run(Thread.java:619)

"TimerQueue" daemon prio=10 tid=0x0862e400 nid=0x18a5 in Object.wait()
[0xad4f9000..0xad4f9fb0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xae1c0ee8> (a javax.swing.TimerQueue)
        at javax.swing.TimerQueue.run(TimerQueue.java:236)
        - locked <0xae1c0ee8> (a javax.swing.TimerQueue)
        at java.lang.Thread.run(Thread.java:619)

"Low Memory Detector" daemon prio=10 tid=0x083e0000 nid=0x18a3 runnable
[0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x083de800 nid=0x18a2 waiting on condition
[0x00000000..0xad82b9c8]
   java.lang.Thread.State: RUNNABLE

"JDWP Event Helper Thread" daemon prio=10 tid=0x083d3400 nid=0x18a1 runnable
[0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x083ca400 nid=0x189f runnable
[0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0x083bac00 nid=0x189e in Object.wait()
[0xad970000..0xad971130]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xae179328> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0xae179328> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x083b6800 nid=0x189d in Object.wait()
[0xad9c1000..0xad9c1fb0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xae179348> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0xae179348> (a java.lang.ref.Reference$Lock)

"main" prio=10 tid=0x08367800 nid=0x189b runnable [0xb7fc7000..0xb7fc8208]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked <0xae17c538> (a java.net.SocksSocketImpl)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at ITOS.javadisplay.server.IJServer.<init>(IJServer.java:208)
        at ITOS.javadisplay.server.IJServer.main(IJServer.java:163)

"VM Thread" prio=10 tid=0x083b3400 nid=0x189c runnable 

"VM Periodic Task Thread" prio=10 tid=0x083e1800 nid=0x18a4 waiting on
condition 

JNI global references: 8018


Found one Java-level deadlock:
=============================
"Thread-8":
  waiting to lock monitor 0x083b7d80 (object 0xadd60240, a
ITOS.javadisplay.fp.PlotPanel),
  which is held by "AWT-EventQueue-0"
"AWT-EventQueue-0":
  waiting to lock monitor 0x083b7cb8 (object 0xae179d18, a
java.awt.Component$AWTTreeLock),
  which is held by "Thread-8"

Java stack information for the threads listed above:
===================================================
"Thread-8":
        at ITOS.javadisplay.fp.FastPlot.resizePanels(FastPlot.java:625)
        - waiting to lock <0xadd60240> (a ITOS.javadisplay.fp.PlotPanel)
        at ITOS.javadisplay.fp.FastPlot.doResize(FastPlot.java:680)
        at ITOS.javadisplay.fp.FastPlot.setBounds(FastPlot.java:672)
        at java.awt.BorderLayout.layoutContainer(BorderLayout.java:821)
        - locked <0xae179d18> (a java.awt.Component$AWTTreeLock)
        at java.awt.Container.layout(Container.java:1432)
        at java.awt.Container.doLayout(Container.java:1421)
        at java.awt.Container.validateTree(Container.java:1519)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validateTree(Container.java:1526)
        at java.awt.Container.validate(Container.java:1491)
        - locked <0xae179d18> (a java.awt.Component$AWTTreeLock)
        at ITOS.javadisplay.beans.ShowBeanBox.startup(ShowBeanBox.java:503)
        at ITOS.javadisplay.beans.ShowBeanBox.run(ShowBeanBox.java:382)
        at java.lang.Thread.run(Thread.java:619)
"AWT-EventQueue-0":
        at java.awt.Component.setFont(Component.java:1633)
        - waiting to lock <0xae179d18> (a java.awt.Component$AWTTreeLock)
        at java.awt.Container.setFont(Container.java:1571)
        at ITOS.javadisplay.fp.PlotPanel.initialize(FastPlot.java:1123)
        at ITOS.javadisplay.fp.FastPlot.reinitialize(FastPlot.java:441)
        at ITOS.javadisplay.fp.FastPlot.resizePanels(FastPlot.java:628)
        - locked <0xadd60240> (a ITOS.javadisplay.fp.PlotPanel)
        at ITOS.javadisplay.fp.FastPlot.doResize(FastPlot.java:680)
        at ITOS.javadisplay.fp.FastPlot.componentResized(FastPlot.java:662)
        at java.awt.Component.processComponentEvent(Component.java:5864)
        at java.awt.Component.processEvent(Component.java:5818)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Found 1 deadlock.

Heap
 def new generation   total 960K, used 216K [0xadc70000, 0xadd70000,
0xae150000)
  eden space 896K,  16% used [0xadc70000, 0xadc96058, 0xadd50000)
  from space 64K, 100% used [0xadd60000, 0xadd70000, 0xadd70000)
  to   space 64K,   0% used [0xadd50000, 0xadd50000, 0xadd60000)
 tenured generation   total 4096K, used 1867K [0xae150000, 0xae550000,
0xb1c70000)
   the space 4096K,  45% used [0xae150000, 0xae322dd8, 0xae322e00, 0xae550000)
 compacting perm gen  total 12288K, used 11686K [0xb1c70000, 0xb2870000,
0xb5c70000)
   the space 12288K,  95% used [0xb1c70000, 0xb27d9908, 0xb27d9a00, 0xb2870000)
No shared spaces configured.
------- Comment #2 From Warren W. Thompson 2007-12-13 18:09:27 -------
The deadlock has been traced to line 624 of FastPlot.java, where the AWT event
thread holds the tree lock on the PlotPanel instance and another thread
attempts to lock the same panel while resizing it. The recommended solution is
to simply remove the second lock and have the panel resize performed on the AWT
event thread.
------- Comment #3 From Warren W. Thompson 2007-12-14 13:23:25 -------
Modified FastPlot.java so that the calls to resize the plot panel occur on the
AWT Event Dispatch Thread.

Modified file(s):
src/javadisplay/src/java/ITOS/javadisplay/fp/FastPlot.java  (trunk: r1049) 
(7-7 fixes: r1050)
------- Comment #4 From Brian Goldman 2008-01-02 17:08:46 -------
Bug has been fixed and released for project use as release 7-7 patch 1.
------- Comment #5 From Brian Goldman 2008-01-23 16:57:51 -------
All release 7-7 patch 1 bugs are now closed.

First Last Prev Next    No search results available

This is a U.S. Government Public Information Exchange Resource

Any attempt to modify this resource or associated information other than for instructed use
is strictly prohibited and may be punishable under the Computer Fraud and Abuse Act of 1986.
All persons are hereby notified that the use of this system constitutes consent to monitoring and auditing.

Privacy Policy and Important Notices.