Thomas Zander wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Wednesday 26 May 2004 19:44, Thomas Fitzsimmons wrote:

 Another problem I noticed -- as soon
as a toolkit is instantiated, the code doesn't exit anymore,
presumably because some thread is hanging on -- even something as
simple as getDefaultToolkit().getScreenSize() needs a Ctrl+C.  It
doesn't seem to be a JVM problem (same on Jam, Sable and gij) so must
be something in the shared gcj/classpath code for the AWT (either in
the main code or in the peers).

Yes, this is still a problem. I haven't figured out yet what should be the exit criteria for a GUI app.


As Andrew said; when the last non-daemon thread dies;
the Sun JVM has a really nice feature to throw a stacktrace of all threads using one command (the EOF char; ctrl-\) if not present; please place that
on a feature request list somwhere :)


Anyway; there is a "Suspend Checker Thread" in that stacktrace that displays a nice idea. (give me an email if you want an example traces-output)

I'm wondering if you guys thought about the concept of application-contexts. The seperation of AWT applications in one JVM. Using this concept (which is implemented in a sun.awt package) you can create multiple AWT-Event threads and multiple totally seperate component-hierarchies which allows (for intstance) to have multiple L&Fs installed.
The java.awt.Frame.getFrames() uses that application-context, for instance.


The implementation on Suns side has some bugs making it unusable; but the idea is certainly _very_ appealing to me.

Hi,

I have a small test case that hangs on SableVM but finishes on Sun's VM's, and apparently kaffe and gij.

SableVM Java stack traces (with CTRL-\) show that one thread gets stuck in java.awt.EventDispatchThread.run()

(VMObject.java:-1)  java/lang/VMObject.wait  n
(Object.java:445)  java/lang/Object.wait
(EventQueue.java:98)  java/awt/EventQueue.getNextEvent
(EventDispatchThread.java:64)  java/awt/EventDispatchThread.run
(VMThread.java:116)  java/lang/VMThread.callRun
(Thread.java:386)  java/lang/Thread.callRun
(VirtualMachine.java:117)  java/lang/VirtualMachine.runThread

while the other is stuck in DestroyJavaVM() waiting for all non-daemon threads to die.

Can anyone comment on the 3 conditions listed in the implementation-dependent section of:

http://java.sun.com/j2se/1.4.2/docs/api/java/awt/doc-files/AWTThreadIssues.html

and on if there's yet treatment of them in Classpath, in the java-gui branch of gcj, or even plans for treatment? Is Sun's way the right way? I guess if gij works then something must have been done ...

Cheers,
Chris
import java.awt.Frame;
                                                                                
public class AwtUtils2 {
        
    public static void main(String[] args) {
	MyThread t = new MyThread();
	t.run();
    }
}

class MyThread extends Thread {

    public void run() {
	try {
	    Frame f = new Frame();
	    System.out.println("hello");
	    f.dispose();
	} catch (Throwable t) {
	}
    }
}
_______________________________________________
Classpath mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/classpath

Reply via email to