No, I'm *not* doing a lengthy task/blocking operation on the EDT. But
my Swing GUI still stops repainting.
This is part of a pretty big Swing fat client app that's still being
developed on Java 1.3 because it needed to run on OS/2 boxes. Now we're
preparing to switch it to 1.4 or 1.5 and the following problem shows up
in one mask that didn't happen on 1.3:
The mask is displayed fine, but once it's completed painting, the GUI
is completely frozen, doesn't react to input and doesn't repaint.
However, the EDT is NOT busy or blocked in some operation, it's
wait()ing in java.awt.EventQueue.getNextEvent(int). Using a debugger, I
found that every time there should be a repaint, it wakes up, but
immediately re-enters this method before actually painting anything.
This is how the stack trace looks at this point (using JDK 1.5.0 on
Windows XP):
Thread [AWT-EventQueue-0] (Suspended (breakpoint at line 377 in
EventQueue))
EventQueue.getNextEvent(int) line: 377
EventDispatchThread.pumpOneEventForHierarchy(int, Component) line: 189
EventDispatchThread.pumpEventsForHierarchy(int, Conditional,
Component) line: 163
EventDispatchThread.pumpEvents(int, Conditional) line: 157
SequencedEvent.dispatch() line: 72
EventQueue.dispatchEvent(AWTEvent) line: 461
EventDispatchThread.pumpOneEventForHierarchy(int, Component) line: 234
EventDispatchThread.pumpEventsForHierarchy(int, Conditional,
Component) line: 163
EventDispatchThread.pumpEvents(int, Conditional) line: 157
EventDispatchThread.pumpEvents(Conditional) line: 149
EventDispatchThread.run() line: 110
Any helpful ideas or comments?
Andrey Kuznetsov - 11 Feb 2005 14:29 GMT
> The mask is displayed fine, but once it's completed painting, the GUI
> is completely frozen, doesn't react to input and doesn't repaint.
> However, the EDT is NOT busy or blocked in some operation, it's
> wait()ing in java.awt.EventQueue.getNextEvent(int). Using a debugger, I
> found that every time there should be a repaint, it wakes up, but
> immediately re-enters this method before actually painting anything.
this is usually happens after some exception was thrown.
did you redirected System.err?

Signature
Andrey Kuznetsov
http://uio.dev.java.net Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities
brazzy - 14 Feb 2005 08:37 GMT
> this is usually happens after some exception was thrown.
> did you redirected System.err?
Exceptions should result in a popup error message, but there's also a
log file. Nothing shows up. It's a pretty big system, and
unfortunately I don't have access to all the source code. However, the
problem occurs reproducably in a certain GUI mask.
Any suggestions on how to get a better diagnosis?
Andrey Kuznetsov - 15 Feb 2005 00:39 GMT
> Exceptions should result in a popup error message, but there's also a
> log file. Nothing shows up. It's a pretty big system, and
> unfortunately I don't have access to all the source code. However, the
> problem occurs reproducably in a certain GUI mask.
>
> Any suggestions on how to get a better diagnosis?
not without source code

Signature
Andrey Kuznetsov
http://uio.dev.java.net Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities