RFR: 8254877: GCLogPrecious::_lock rank constrains what locks you are allowed to have when crashing
Stefan Karlsson
stefank at openjdk.java.net
Wed Oct 28 13:53:51 UTC 2020
This is an alternative version of the fix proposed in 900:
https://github.com/openjdk/jdk/pull/900
Erik's description:
> Today, when you crash, the GCLogPrecious::_lock is taken. This effectively limits you to only get clean crash reports if you crash or assert without holding a lock of rank tty or lower. It is arguably difficult to know what locks you are going to have when crashing. Therefore, I don't think the precious GC log should constrain possible crashing contexts in that fashion.
As Erik mentioned in that PR, I'd like to retain the ability to easily dump the precious log when debugging. The proposed fix changes the Mutex to a Semaphore, and use trywait to safely access the buffer. In the unlikely event that another thread is holding the lock, the hs_err printer skips printing the log.
This also makes it possible to call precious logging from within the stack watermark processing code. I think there's a possibility that we might call the following error logging, when we fail to commit memory for a ZPage, when relocating, during stack watermark processing:
`log_error_p(gc)("Failed to commit memory (%s)", err.to_string());`
-------------
Commit messages:
- 8254877: GCLogPrecious::_lock rank constrains what locks you are allowed to have when crashing
Changes: https://git.openjdk.java.net/jdk/pull/903/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=903&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8254877
Stats: 27 lines in 2 files changed: 11 ins; 4 del; 12 mod
Patch: https://git.openjdk.java.net/jdk/pull/903.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/903/head:pull/903
PR: https://git.openjdk.java.net/jdk/pull/903
More information about the hotspot-gc-dev
mailing list