RFR: 8146009: "pure virtual method called" with using new GC logging mechanism
Marcus Larsson
marcus.larsson at oracle.com
Fri Oct 7 14:26:41 UTC 2016
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