RFR [7011804] SequenceInputStream with lots of empty substreams can cause StackOverflowError
Alan Bateman
Alan.Bateman at oracle.com
Sun Mar 2 10:50:11 UTC 2014
On 02/03/2014 07:58, Ivan Gerasimov wrote:
> Hello!
>
> SequenceInputStream#read functions are implemented recursively.
> This may cause stack overflow in some extreme cases with lots of empty
> substreams.
>
> Would you please help review the fix?
>
> BUGURL: https://bugs.openjdk.java.net/browse/7011804
> WEBREV: http://cr.openjdk.java.net/~igerasim/7011804/0/webrev/
Thanks for taking one. I don't think this code has changed much since
JDK 1.0 where it seems to have been originally implemented to use
recursion. I'm dubious about the bug report and whether the usage is
real or made-up to demonstrate the issue.
In any case, the changes good to me. One comment in passing is that
normally an InputStream read throws IOException when the stream is
closed where as SIS returns EOF. There may be an opportunity to clarify
the javadoc in a few places (not for this bug of course).
The test looks okay. I agree with Chris that there shouldn't be a need
to run it in its own VM.
-Alan.
More information about the core-libs-dev
mailing list