> 
> Actually, I found that the Sun's JDK also uses recursion here.
> However, as JDK consumes less stack space than Kaffe (especially
> Kaffe-interpreter), the problem is visible only in Kaffe.
> 
> So there are two problems:
> 1) Low default stack space used by Kaffe compared to its needs.
> 2) Bug in jCVS-4.7.5 (which is obsoleted by newer versions)
> 

This is all be true, but 

> There is no bug in AWTEventMulticaster
> 

I strongly disagree with this conclusion. 

Consider this program:

        import java.awt.*;

        public class CrashKaffe {
            public static void main(String av[]) {
                Frame f = new Frame();
                Canvas c = new Canvas();
                f.add(c);
                f.pack();
                f.show();

                for (int i = 0;;i++) {
                    Graphics g = c.getGraphics();
                    c.resize(i%100, i%100);
                }
            }
        }

Should it be able crash kaffe?  I don't think so.

 In this particular case, the problem is caused by a combination
of factors, including 
+ the implementation of AWTEventMulticaster
+ the implementation of Canvas.getGraphics()
+ my not disposing of g in the loop.

However, none of these factors should terminate the program.

A performance degradation may be acceptable (which is what happens
according to Sun's JDK book if you don't dispose a Graphics object),
but if you really think about it not even that is really acceptable.
Program termination is definitely unacceptable.  That's why I call
it a bug.

        - Godmar

Reply via email to