Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6648922

Exceptions in GrayBoxPainter can cause applet to not load

XMLWordPrintable

    • b11
    • generic
    • generic
    • Not verified

        The GrayBoxPainter in the plug-in is notorious for the exceptions it prints to the Java Console. The root cause of these exceptions is the fact that this class is generally used in a thread-unsafe manner, which is at least partially unavoidable (at least, not without large restructuring of the code) due to how the download progress callbacks work. Here, however, is a stack trace from the new Java Plug-In where such an error causes an applet to not load properly:

        java.lang.NullPointerException: component argument pData
        at sun.java2d.windows.GDIRenderer.doFillRect(Native Method)
        at sun.java2d.windows.GDIRenderer.fillRect(GDIRenderer.java:129)
        at sun.java2d.pipe.ValidatePipe.fillRect(ValidatePipe.java:58)
        at sun.java2d.SunGraphics2D.fillRect(SunGraphics2D.java:2274)
        at sun.plugin.util.GrayBoxPanel.paint(GrayBoxPanel.java:133)
        at sun.plugin.util.GrayBoxPainter.paintGrayBox(GrayBoxPainter.java:363)
        at sun.plugin.util.GrayBoxPainter.repaintGrayBox(GrayBoxPainter.java:313)
        at sun.plugin.util.GrayBoxPainter.access$200(GrayBoxPainter.java:37)
        at sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener.progressFinish(GrayBoxPainter.java:491)
        at sun.plugin.util.EventMulticaster.progressFinish(EventMulticaster.java:114)
        at sun.plugin.util.ProgressMonitor.unregisterSource(ProgressMonitor.java:176)
        at sun.net.ProgressSource.finishTracking(ProgressSource.java:137)
        at sun.net.www.http.KeepAliveStream.close(KeepAliveStream.java:91)
        at sun.net.www.MeteredStream.justRead(MeteredStream.java:75)
        at sun.net.www.MeteredStream.read(MeteredStream.java:117)
        at java.io.FilterInputStream.read(FilterInputStream.java:116)
        at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2385)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
        at sun.plugin2.applet.Applet2ClassLoader.getBytes(Applet2ClassLoader.java:549)
        at sun.plugin2.applet.Applet2ClassLoader.access$700(Applet2ClassLoader.java:55)
        at sun.plugin2.applet.Applet2ClassLoader$2.run(Applet2ClassLoader.java:224)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:221)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at sun.plugin2.applet.Applet2ClassLoader.loadCode(Applet2ClassLoader.java:864)
        at sun.plugin2.applet.Applet2Manager.createApplet(Applet2Manager.java:2835)
        at sun.plugin2.applet.Applet2Manager.access$2000(Applet2Manager.java:87)
        at sun.plugin2.applet.Applet2Manager$AppletExecutionRunnable.run(Applet2Manager.java:1399)
        at java.lang.Thread.run(Thread.java:619)

        We need to guard against RuntimeExceptions propagating out of the GrayBoxPainter and use Trace.ignoredException() to display them, so that if tracing is turned off they don't pollute the Java Console output.

              kbr Kenneth Russell (Inactive)
              kbr Kenneth Russell (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: