RFR: 8146009: "pure virtual method called" with using new GC logging mechanism

Michail Chernov michail.chernov at oracle.com
Fri Oct 7 16:05:24 UTC 2016


Hi Marcus,

Thank you for fixing this.

Could you please change @requires in the test?

It should be

  * @requires vm.gc.G1

instead of

  * @requires vm.gc=="G1" | vm.gc=="null"

New form of tag is applicable for platforms where G1 are not supported 
and allows to exclude this test on those platforms. Older version of tag 
can cause to the test failure.

Thanks,
Michail


On 10/07/2016 05:26 PM, Marcus Larsson wrote:
> Hi,
>
> Making another attempt to fix this issue.
>
> Summary:
> The following patch resolves a problem where the VM would crash during 
> shutdown due to static log related memory being de-initialized before 
> the last use of the logging framework. The solution involves parts of 
> the Nifty Counter idiom [0] to control static initialization and 
> de-initialization of stdout's and stderr's LogOutputs. Both objects 
> are now allocated using placement new, and avoids destructor calls 
> during de-initialization. The LogStreamInitializer makes sure both 
> objects are initialized before first use.
>
> Because the LogOutput::Stdout/err pointers could no longer be kept in 
> LogOutput, I've replaced all usages of them with the new references 
> instead.
>
> The patch includes a regression test for this issue, contributed by 
> Michail Chernov.
>
> Webrev:
> http://cr.openjdk.java.net/~mlarsson/8146009/webrev.00
>
> Issue:
> https://bugs.openjdk.java.net/browse/JDK-8146009
>
> Testing:
> JPRT testset hotspot, included test on supported platforms.
>
> Thanks,
> Marcus
>
> [0] https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Nifty_Counter



More information about the hotspot-dev mailing list