I'm still getting some occasional instability when disposing of Frames
in the Linux JDK - I get IOT trap/Abort. My application is crashing
randomly and it's driving me nuts. Is there anything I can do to help
find this bug (I can send complete class files and instructions that
crash the system fairly often)? Can anyone think of a work-around?
The crash happens right when I call Frame.dispose(). I'll include the
stack frame for the running thread when the thing dies. The frame
contains several components: a Label, a TextField, and a Button, all
in a FlowLayout.
The last stackframe in my code (CreateAgentUI.java:70) is calling
Frame.dispose() on a frame for a dialog box it created awhile ago, in
response to a user clicking on a button in that frame. Is it possible
that there's some sort of race condition where the Button si being
destroyed while the AWT still needs it?
The bug happens with both java and java_g, but not entirely
reproducably. sbb once asked me to test this while DO_NOT_FREE was
defined. Unfortunately, the bug is random enough that I can't test it
easily. Next time the moons are in the wrong alignment I'll try to do
that.
Here's the stack frame that seems most relevant:
"AWT-EventQueue-0" (TID:0x407209c0, sys_thread_t:0x4154bf04, state:R) prio=5
*current thread*
sun.awt.motif.MComponentPeer.dispose(MComponentPeer.java:215)
sun.awt.motif.MFramePeer.dispose(MFramePeer.java:101)
java.awt.Component.removeNotify(Component.java:2526)
java.awt.Container.removeNotify(Container.java:1149)
java.awt.Window.dispose(Window.java:177)
java.awt.Frame.dispose(Frame.java:372)
edu.mit.media.nelson.straum.agent.CreateAgentUI.createAgent(CreateAgentUI.java:70)
edu.mit.media.nelson.straum.agent.CreateAgentUI$2.actionPerformed(CreateAgentUI.java:45)
java.awt.Button.processActionEvent(Button.java:254)
java.awt.Button.processEvent(Button.java:227)
java.awt.Component.dispatchEventImpl(Component.java:1764)
java.awt.Component.dispatchEvent(Component.java:1704)
java.awt.EventDispatchThread.run(EventDispatchThread.java:63)
My application has a tangle of threads going every which way, so I
won't include them all. Here's the rest of the threads that are Runnable:
"XEventServer Reader" (TID:0x4071f3d8, sys_thread_t:0x4152af04, state:R) prio=5
java.net.SocketInputStream.read(SocketInputStream.java:92)
java.net.SocketInputStream.read(SocketInputStream.java:75)
java.io.InputStreamReader.fill(InputStreamReader.java)
java.io.InputStreamReader.read(InputStreamReader.java)
java.io.BufferedReader.fill(BufferedReader.java)
java.io.BufferedReader.readLine(BufferedReader.java)
edu.mit.media.nelson.straum.sysinfo.unix.XEventServer.run(XEventServer.java:96)
java.lang.Thread.run(Thread.java)
"TcpTransporter Server" (TID:0x406fc458, sys_thread_t:0x41485f04, state:R) prio=5
java.net.PlainSocketImpl.accept(PlainSocketImpl.java:387)
java.net.ServerSocket.implAccept(ServerSocket.java:206)
java.net.ServerSocket.accept(ServerSocket.java:189)
COM.objectspace.voyager.VoyagerDefaultServerSocket.accept(VoyagerDefaultServerSocket.java:26)
COM.objectspace.voyager.TcpTransporter.run(TcpTransporter.java:118)
COM.objectspace.voyager.ReusableThread.run(ReusableThread.java:132)
"Async Garbage Collector" (TID:0x406fbc98, sys_thread_t:0x4141bf04, state:R) prio=1
"Idle thread" (TID:0x406fba08, sys_thread_t:0x413faf04, state:R) prio=0
--KAA24401.900599060/pinotnoir.media.mit.edu--