Look fine Sherman; thanks,

-Joe

On 2/12/2016 8:58 PM, Xueming Shen wrote:
Hi,

Please help review the change for JDK-8148624

Issue: https://bugs.openjdk.java.net/browse/JDK-8148624
Webrev: http://cr.openjdk.java.net/~sherman/8148624/webrev/

The tests are intended to test/verify that the Deflater/Inflater.end() method will not be invoked when they are passed in as the parameter to the constructor of the DefaultInputStream and InflateOutputStream class, when the corresponding close&/finish() method are invoked. The stacktrace suggests that the end() method is not actually being called (failure) by the close/finish(), but by the finalize(). It appears the deflater/inflater is somehow being finalized by gc
between A and B showed below

    public static void main(String[] args) throws Throwable {
        try {realMain(args);} catch (Throwable t) {unexpected(t);}
[A]-->
System.out.println("\nPassed = " + passed + " failed = " + failed);
[B]-->
        if (failed > 0) throw new AssertionError("Some tests failed");}


the problem can be easily reproduced by inserting a System.gc() in between.

The easy fix is just move the inflater/deflater out of realMain() to be the static variable
to prevent them from being gc-ed.

Thanks,
Sherman

Reply via email to