NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

java bug to affect VisAD in Sun 1.4.2 JRE

Hi All,

I installed Sun 1.4.2 a while ago, and I am very happy with its performance in Linux, However there is bug on this release that seems to affect VisAD. The problem that araises in Visad is that some points in a lines (e.g. Grid2Dset) are given the vaule "Infinity", which makes the line go across the image (http://cires.colorado.edu/~ricardo/temp/Screenshot.png)

The exception I got is:

sun.dc.pr.PRException: endPath: bad path
      at sun.dc.pr.Rasterizer.endPath(Rasterizer.java:537)
at sun.java2d.pipe.DuctusRenderer.createShapeRasterizer(DuctusRenderer.java:374) at sun.java2d.pipe.DuctusShapeRenderer.renderPath(DuctusShapeRenderer.java:57) at sun.java2d.pipe.DuctusShapeRenderer.draw(DuctusShapeRenderer.java:45)
      at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2128)
      at visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:806)
      at visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:577)
      at visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:577)
      at visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:566)
      at visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:577)
      at visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:577)
at visad.java2d.VisADCanvasJ2D.paintComponent(VisADCanvasJ2D.java:451)
      at visad.java2d.VisADCanvasJ2D.run(VisADCanvasJ2D.java:349)
      at java.lang.Thread.run(Thread.java:534)

This is a known bug in Java. The report can be found in http://developer.java.sun.com/developer/bugParade/bugs/4755500.html It affected previous versions of Java, and it seems it affects as well this new release.

Is it possible to come up with a workaround for this bug? Is it actually the same bug.

REPRODUCIBILITY :

This bug can be reproduced always.

---------- BEGIN SOURCE ----------

public class MathBugTest {
  public static void main(String[] args) {
  System.out.println(Math.round(1d)); // prints "1", as expected
  for (int i=0; i<2000; i++) {
      Math.round(Double.NaN);
  }
  System.out.println(Math.round(1d)); // prints "0", which is wrong
}

}

---------- END SOURCE ---------

Thanks,
Ricardo


  • 2003 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: