<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Hi Frederic, </div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
I didn't see your post until now, I was on vacation last week..</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; background: var(--neutralPrimarySurface); color: rgb(0, 0, 0);"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; background: var(--neutralPrimarySurface); color: rgb(0, 0, 0);">Yes, Long.MIN_VALUE has special meaning, It means the value is missing or not applicable.</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; background: var(--neutralPrimarySurface); color: rgb(0, 0, 0);"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; background: var(--neutralPrimarySurface); color: rgb(0, 0, 0);">Erik</span></div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> hotspot-jfr-dev <hotspot-jfr-dev-retn@openjdk.org> on behalf of Frederic Thevenet <fthevene@redhat.com><br>
<b>Sent:</b> Tuesday, June 6, 2023 9:56 PM<br>
<b>To:</b> hotspot-jfr-dev@openjdk.org <hotspot-jfr-dev@openjdk.org><br>
<b>Subject:</b> Field maxSize of event jdk.YoungGenerationConfiguration can be set to Long.MIN_VALUE</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hi,<br>
<br>
I recently reported on an issue where invoking the command "jfr print" <br>
on a recording that contain events where one of the field in is an <br>
amount in bytes whose value is Long.MIN_VALUE (or invoking "toString()" <br>
on such an event), you'd the following error:<br>
jfr print: unexpected internal error, Index -1 out of bounds for length 6<br>
<br>
Now, I believe the root cause and fix to the issue to be pretty trivial <br>
and I submitted a PR for that, but I am trying to understand if the <br>
event that revealed the bug is really supposed to report such a value, <br>
or if there's another problem at play here.<br>
<br>
The event type in question is "jdk.YoungGenerationConfiguration" whose <br>
"maxSize" field is always equal to Long.MIN_VALUE when the GC in use is <br>
ShenandoahGC or ZGC.<br>
Now, I'm guessing that Shenandoah and ZGC not being generational, this <br>
particular configuration item is probably mostly ignored/useless, in <br>
which case, I feel it isn't fully unexpected that if present <br>
nonetheless, such events would be populated with default values which, <br>
from a cursory glance at gcConfiguration.hpp[2] looks like maxSize is <br>
set to the maximum value of uintx (which when cast as a java long would <br>
be Long.MIN_VALUE if I'm not mistaking):<br>
<br>
class GCYoungGenerationConfiguration {<br>
  public:<br>
   bool has_max_size_default_value() const;<br>
   uintx max_size() const;<br>
   uintx min_size() const;<br>
   intx new_ratio() const;<br>
};<br>
<br>
I'm not 100% sure that my understanding of the whole thing is correct <br>
here, so please do not hesitate to correct me if it isn't.<br>
<br>
Furthermore, I'm unsure whether or not the fact that maxSize is <br>
effectively set to Long.MIN_VALUE is necessarily an issue here (as long <br>
as the code that handles the formatting is fixed, of course): maybe the <br>
value carries a specific meaning I'm unaware of.<br>
<br>
I would really appreciate it if someone here is a position to shed some <br>
light on the matter for me.<br>
<br>
Thanks!<br>
Frederic<br>
<br>
[1] <a href="https://bugs.openjdk.org/browse/JDK-8309550">https://bugs.openjdk.org/browse/JDK-8309550</a><br>
[2] <br>
<a href="https://github.com/openjdk/jdk/blob/4a75fd462c002a209201d8bfc8d6c9eb286a7444/src/hotspot/share/gc/shared/gcConfiguration.hpp#L71">https://github.com/openjdk/jdk/blob/4a75fd462c002a209201d8bfc8d6c9eb286a7444/src/hotspot/share/gc/shared/gcConfiguration.hpp#L71</a><br>
<br>
-- <br>
Frederic Thevenet<br>
Senior Software Engineer - OpenJDK<br>
Red Hat France <<a href="https://www.redhat.com">https://www.redhat.com</a>><br>
BAF5 C2D2 0BE0 1715 5EE1 0815 2065 AD47 B326 EB92<br>
<br>
</div>
</span></font></div>
</body>
</html>