[13] RFR(XS): 8227605: Kitchensink fails "assert((((klass)->trace_id() & (JfrTraceIdEpoch::leakp_in_use_this_epoch_bit())) != 0)) failed: invariant"

Markus Gronlund markus.gronlund at oracle.com
Tue Jul 30 21:04:20 UTC 2019


Kindly asking for reviews for the following changeset:

Bug: https://bugs.openjdk.java.net/browse/JDK-8227605 
Webrev: http://cr.openjdk.java.net/~mgronlun/8227605/webrev01/

Clearing a bit that was set in a previous epoch should be done using CAS not to lose information in the current (this) epoch. This has also been the case up to the changes done in relation to Memory Leak Profiler, where the bit tagging scheme and implementation changed quite substantially. Part of the modifications done there had set_traceid_mask() to not use CAS unfortunately. This is the reason for the assertion, as information about the current (this) epoch was lost.

We need to restore set_traceid_mask() to use CAS the way it was done originally.

Thanks to Erik Gahlin for debugging.


More information about the hotspot-runtime-dev mailing list