RFR: 8269886: Inaccurate error message for compressed hprof test [v4]

Chris Plummer cjplummer at openjdk.java.net
Wed Jul 7 17:47:52 UTC 2021


On Wed, 7 Jul 2021 02:39:10 GMT, Lin Zang <lzang at openjdk.org> wrote:

>> The current implementation of hprof Reader for testing always prompts "Can not decompress the compressed hprof file" when there is error for testing gzipped heap dump. This is inaccurate if the gzipped file was decompressed successfully but the hprof file format is incorrect. So the inaccurate error message could be misleading for issue analysis.
>> 
>> This trivial PR refine the error message by simply print "Can not get stack trace from the compressed hprof file", the underlying exception from GZIPInputStream() or HprofReader() would give accurate error info.
>
> Lin Zang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   fix the out.delete() logic

There is still an inconsistency exception handling. For the outer bad MAGIC_NUMBER handling you have:

186                 throw new IOException("Unrecognized magic number: " + i);

But the decompressed handling results in:

178                         throw new IOException("Unrecognized magic number of decompressed data: " + i);

Which is caught and wrapped by:

181                     throw new IOException("Cannot get stack trace from the compressed hprof file", e);

Also, nothing is wrapping exceptions thrown by the following code:

143                 HprofReader r
144                     = new HprofReader(heapFile, in, dumpNumber,
145                                       true, debugLevel);
146                 r.read();
147                 return r.printStackTraces();

But any exception thrown by the following code is wrapped and rethrown at line 181:

172                         HprofReader r
173                             = new HprofReader(deCompressedFile, in2, dumpNumber,
174                                               true, debugLevel);
175                         r.read();
176                         return r.printStackTraces();

-------------

PR: https://git.openjdk.java.net/jdk/pull/4685


More information about the serviceability-dev mailing list