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

Dmitry Samersoff dmitry.samersoff at oracle.com
Sat Oct 8 17:22:37 UTC 2016


Marcus,

logConfiguration.cpp:

107: size_t is unsigned
282: Please add a comment that output[0] and output[1] is stdout/stderr

-Dmitry


On 2016-10-07 17:26, 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


-- 
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.


More information about the hotspot-dev mailing list