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

Marcus Larsson marcus.larsson at oracle.com
Mon Oct 10 07:24:44 UTC 2016


Hi,

Thanks for looking at this.

On 10/07/2016 06:05 PM, Michail Chernov wrote:
> 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.

Will fix!

Marcus

>
> 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