RFR: 8334781: JFR crash: assert(((((JfrTraceIdBits::load(klass)) & ((JfrTraceIdEpoch::this_epoch_method_and_class_bits()))) != 0))) failed: invariant
Markus Grönlund
mgronlun at openjdk.org
Tue Jul 16 10:49:51 UTC 2024
On Tue, 16 Jul 2024 00:05:36 GMT, Serguei Spitsyn <sspitsyn 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?
No. because I want to avoid dragging in all of the definitions in jfrTraceIdMarcros.hpp.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20171#discussion_r1679179786
More information about the hotspot-jfr-dev
mailing list