[15]: RFR(S): 8241718: assert ((klass)->trace_id()) & ((JfrTraceIdEpoch::method_and_class_in_use_this_epoch_bits()))) != 0 in ObjectSampleCheckpoint::add_to_leakp_set
Ioi Lam
ioi.lam at oracle.com
Mon Jun 22 17:13:14 UTC 2020
On 6/22/20 8:32 AM, Calvin Cheung wrote:
> Hi Markus,
>
> On 6/22/20 6:04 AM, Markus Gronlund wrote:
>> Thank you David for taking a look.
>>
>> "I'm wondering though how this arises in practice. I can see this
>> could be an issue with dynamic archiving as one might expect JFR to
>> be active when running the app that will do the dynamic archiving.
>> But for a static archive I would (naively perhaps) expect dumping to
>> disable JFR."
>>
>> Yes, I am a bit unclear on this as well - maybe we can get some
>> clarification from the CDS/AppCDS folks?
>
> Currently, JFR will be disabled during CDS dumping, both static and
> dynamic. There's a is_cds_dump_requested function in the following:
>
> http://hg.openjdk.java.net/jdk/jdk/file/8d722fb14093/src/hotspot/share/jfr/recorder/jfrRecorder.cpp#l174
>
>
> thanks,
>
> Calvin
I think we just disable part of JFR. If you run
test/hotspot/jtreg/runtime/cds/appcds/CDSandJFR.java, this comes out of
STDERR
Java HotSpot(TM) 64-Bit Server VM warning: JFR will be disabled during
CDS dumping
But STDOUT also says:
0.210s][warning][cds] Skipping jdk/internal/event/Event: Unsupported
location
[0.210s][warning][cds] Skipping jdk/internal/event/Event: JFR event class
[0.210s][warning][cds] Skipping jdk/jfr/Event: Unsupported location
[0.210s][warning][cds] Skipping jdk/jfr/Event: JFR event class
[0.211s][warning][cds] Skipping GetFlightRecorder$TestEvent: Unsupported
location
[0.211s][warning][cds] Skipping GetFlightRecorder$TestEvent: JFR event class
[0.211s][warning][cds] Skipping jdk/jfr/events/ActiveRecordingEvent:
Unsupported location
[0.211s][warning][cds] Skipping jdk/jfr/events/ActiveRecordingEvent: JFR
event class
We currently have JDK-8222945 -- Support JFR during CDS dumping. We need
to decide what to do -- whether we should completely disable JFR during
CDS dumps, or completely support it, but undo the side effects cleanly.
Thanks
- Ioi
>
>>
>> "Regardless, incidental state changes due to VM configuration at dump
>> time should not be stored in the archive, so I hope there is nothing
>> else that we may be storing of a similar nature."
>>
>> I was not aware that Method*'s are treated like this too; I knew from
>> before that there is a Klass::remove_unshareable_info(), Ioi and I
>> worked with it many years ago letting it mask off certain bits for
>> the Klass*. From what I can see, there is also a
>> ConstantPool::remove_unsharable_info(), but for JFR we don't trace
>> ConstantPools.
>>
>> If, say, CLDs are incorporated into the CDS archive, we would need to
>> put in place a similar remove_unsharable_info() for those artifacts
>> as well.
>>
>> Thank you for the review
>> Markus
>>
>> -----Original Message-----
>> From: David Holmes
>> Sent: den 22 juni 2020 03:23
>> To: Markus Gronlund <markus.gronlund at oracle.com>;
>> hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: [15]: RFR(S): 8241718: assert ((klass)->trace_id()) &
>> ((JfrTraceIdEpoch::method_and_class_in_use_this_epoch_bits()))) != 0
>> in ObjectSampleCheckpoint::add_to_leakp_set
>>
>> Hi Markus,
>>
>> On 22/06/2020 3:44 am, Markus Gronlund wrote:
>>> Greetings,
>>>
>>> Kindly asking for review for the following change set to fix an
>>> interoperability issue between JFR and CDS.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8241718
>>> Webrev: http://cr.openjdk.java.net/~mgronlun/8241718/webrev00/
>>> Testing: jdk_jfr, runtime/cds
>>>
>>> Summary:
>>> General: Method* trace flags should not be serialized to the CDS
>>> archive and must therefore be removed in
>>> Method::remove_unsharable_info().
>>> JFR specific: CLEAR_METHOD_LEAKP(method) removes the leakp flag on
>>> first method write to have it serialize only once.
>> The fix seems reasonable given the description of the problem.
>>
>> I'm wondering though how this arises in practice. I can see this
>> could be an issue with dynamic archiving as one might expect JFR to
>> be active when running the app that will do the dynamic archiving.
>> But for a static archive I would (naively perhaps) expect dumping to
>> disable JFR.
>> Regardless, incidental state changes due to VM configuration at dump
>> time should not be stored in the archive, so I hope there is nothing
>> else that we may be storing of a similar nature.
>>
>> Thanks,
>> David
>> -----
>>
>>> Thanks
>>> Markus
>>>
>>>
>>>
>>>
More information about the hotspot-runtime-dev
mailing list