Hi,

Please review the following patch to fix an issue in UL causing the VM to crash during shutdown.

The problem is that the static LogStdoutOutput is deinitialized before the last use of it (G1 concurrent thread tries to log very late during VM shutdown). The solution is to make sure neither LogStdoutOutput nor LogStderrOutput are deinitialized during the full lifetime of the VM. To accomplish this I've changed the storage from static objects to static pointers to heap instances that are allocated & initialized on first use [0]. These instances are never deleted and can always be used. Also updated LogConfiguration::finalize to disable all file outputs before deleting & freeing them.

Webrev:
http://cr.openjdk.java.net/~mlarsson/8146009/webrev.00/

Issue:
https://bugs.openjdk.java.net/browse/JDK-8146009

Testing:
- local runs of the reproducer (500+ iterations without crashing)
- JPRT

Thanks,
Marcus

[0]: https://isocpp.org/wiki/faq/ctors#static-init-order-on-first-use

Reply via email to