You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Mikhail Markov (JIRA)" <ji...@apache.org> on 2007/04/23 14:06:21 UTC

[jira] Commented: (HARMONY-3703) [classlib][archive][netbeans] GZIPInputStream throws IOException when feeding from the network

    [ https://issues.apache.org/jira/browse/HARMONY-3703?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12490915 ] 

Mikhail Markov commented on HARMONY-3703:
-----------------------------------------

Vasily, I could not reproduce the described problem on my WinXP.

On RI, J9 & DRLVM i get the same following output with your test (with the specified http address):
0
777
...
386865

Did you tried on Windows or on Linux?

> [classlib][archive][netbeans] GZIPInputStream throws IOException when feeding from the network
> ----------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3703
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3703
>             Project: Harmony
>          Issue Type: Bug
>          Components: App-Oriented Bug Reports, Classlib
>            Reporter: Vasily Zakharov
>
> When java.util.zip.GZIPInputStream is passed a stream constructed from a network URL, it throws IOException (Crc mismatch) at end-of-stream. If the same content is fed through local file URL, the problem doesn't occur. It looks like some end-of-stream detection problem is in place, or a race condition.
> public class Test {
>     public static void main(String args[]) throws Exception {
>         byte[] buffer = new byte[0x100000];
>         String url =
>                 "http://www.netbeans.org/updates/55_1.20_.xml.gz";
>                 //"file:55_1.20_.xml.gz";
>         java.io.InputStream stream = new java.util.zip.GZIPInputStream(new java.net.URL(url).openStream());
>         int length = 0, num = 0;
>         while (num >= 0) {
>             length += num;
>             System.out.println(length);
>             num = stream.read(buffer, length, (buffer.length - length));
>         }
>     }
> }
> $ Ri/bin/java -Dhttp.proxyHost=$PROXY_HOST -Dhttp.proxyPort=$PROXY_PORT Test
> 0
> 777
> 3392
> ...
> 386431
> SUCCESS
> $ HY/bin/java -Dhttp.proxyHost=$PROXY_HOST -Dhttp.proxyPort=$PROXY_PORT Test
> 0
> 777
> 3392
> ...
> 386431
> Exception in thread "main" java.io.IOException: Crc mismatch
>         at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:166)
>         at Test.main(Test.java:13)
> On IBM VM, this result is stable. On DRLVM, the test sometimes (rarely) passes, and sometimes (also rarely) another exception occurs instead of IOException:
> Uncaught exception in main:
> java.lang.ArrayIndexOutOfBoundsException: bad arrayCopy
>         at java.lang.VMMemoryManager.arrayCopy(VMMemoryManager.java)
>         at java.lang.System.arraycopy(System.java:86)
>         at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:161)
>         at Test.main(Test.java:13)
> If content is previously downloaded (wget http://www.netbeans.org/updates/55_1.20_.xml.gz) and local file URL is used instead of network URL (comment line 5, uncomment line 6), output on Harmony becomes identical to output on RI.
> This problem was discovered while trying to run NetBeans on Harmony. 
> Issue HARMONY-3702 was also filed while investigating this one.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.