RFR JDK-8148624: Test failure of ConstructInflaterOutput.java

joe darcy joe.darcy at oracle.com
Mon Feb 15 17:58:00 UTC 2016


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




More information about the core-libs-dev mailing list