<snip>

I've looked into this, I feel puzzled, the stack trace shows that:
org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:89)
but there are checks for overflow:
if (0 <= offset && offset <= buffer.length && 0 <= count
            && count <= buffer.length - offset){
...
}

Oops, this is certainly wrong: "offset <= buffer.length","count <= buffer.length - offset", the equal mark should be omitted.


I do some further study and test then, and find the problem was not so easy.

Alex and I are correct that "offset <= buffer.length" here is wrong, but the next "count <= buffer.length - offset" seems has proved its correctness.

I have a test[1], try to write(new byte[count],count, 0) to a SocketOutputStream, the test passes quietly. I do this test on WinXp Sp2, the latest Harmony workspace, with J9 VM5.

I believe the ArrayIndexOutOfBoundsException is throw out when it try to get byte array in the native (GetByteArrayRegion), which is a JNI method. I guess there may be some difference between VMs.

Martin, are you using DRLVM? Can someone using DRLVM (or other VMs) run the test below on DRLVM for me? Thanks!

[1]
public void test_socketOutputStream() throws Exception {
        ServerSocket ss = new ServerSocket(0);
        Socket sock = new Socket();
        sock.connect(new InetSocketAddress
               (InetAddress.getLocalHost(),ss.getLocalPort()));
        ss.accept();
        OutputStream os = sock.getOutputStream();
        os.write(new byte[0], 0, 0); // passes here
        os.write(new byte[512], 512, 0); // passes here
    }

I'll raise a JIRA for this.

I'm not sure if this is the cause of the problem. So would you please try again if I correct it? :)

So can you give more information? e.g, what are PrintWriter try to write that time? :)

2.- Trying to generate charts using JFreeCharts (server-side):

java.lang.NoClassDefFoundError: org/apache/harmony/awt/gl/ImageSurface
at java.awt.image.BufferedImage.createImageSurface(BufferedImage.java:659)
    at java.awt.image.BufferedImage.<init>(BufferedImage.java:352)
at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1211) at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1193) at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1178)...

The JDBC related code is running fine, performance also looks very good.

I will contact Winstone developer to see if he can help in some way to
identify the problem. He already helped me a few months ago to help
identify a bug in GNU Classpath server socket API.

Regards,
Martin






--

Best Regards!

Jimmy, Jing Lv
China Software Development Lab, IBM

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to