RFR: 8334781: JFR crash: assert(((((JfrTraceIdBits::load(klass)) & ((JfrTraceIdEpoch::this_epoch_method_and_class_bits()))) != 0))) failed: invariant

Serguei Spitsyn sspitsyn at openjdk.org
Tue Jul 16 00:07:52 UTC 2024


On Sat, 13 Jul 2024 14:47:21 GMT, Markus Grönlund <mgronlun at openjdk.org> wrote:

> Greetings,
> 
> Please help review this adjustment, which fixes rare situations where methods that have been retransformed or redefined can be perceived as being tagged by JFR when they, in fact, are not. The fix unconditionally sets the metatag clear bits on artefact initialization and adds assertions about the JFR bit tag state machine.
> 
> Testing: jdk_jfr, stress testing
> 
> Thanks
> Markus

src/hotspot/share/jfr/support/jfrTraceIdExtension.hpp line 47:

> 45: #define RESTORE_ID(k) JfrTraceId::restore(k);
> 46: 
> 47: static constexpr const uint16_t cleared_epoch_bits = 512 | 256;

Q: Could the `EPOCH_CLEARED_BITS` be used instead?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20171#discussion_r1678533638


More information about the serviceability-dev mailing list