<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head><meta content="width=device-width, initial-scale=1" name="viewport" /><style>
.sa-url-a-item:visited {
        color: #03315f;
}
.sa-url-a-item {
        color: #0073BB !important;
}
.sa-url-separator {
        display: inline;
}

@media screen and (max-width: 480px) {
        .sa-url-list-item {
                display: block !important;
        }
        .sa-url-separator{
                display: none !important;
        }
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
        {font-family:Menlo;
        panose-1:2 11 6 9 3 8 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
h2
        {mso-style-priority:9;
        mso-style-link:"Heading 2 Char";
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:18.0pt;
        font-family:"Aptos",sans-serif;
        font-weight:bold;}
h3
        {mso-style-priority:9;
        mso-style-link:"Heading 3 Char";
        margin-top:8.0pt;
        margin-right:0in;
        margin-bottom:4.0pt;
        margin-left:0in;
        page-break-after:avoid;
        font-size:14.0pt;
        font-family:"Calibri",sans-serif;
        color:#2F5496;
        mso-ligatures:standardcontextual;
        font-weight:normal;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        font-size:10.0pt;
        font-family:"Courier New";}
span.Heading2Char
        {mso-style-name:"Heading 2 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 2";
        font-family:"Aptos",sans-serif;
        mso-ligatures:none;
        font-weight:bold;}
span.Heading3Char
        {mso-style-name:"Heading 3 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 3";
        font-family:"Times New Roman",serif;
        color:#2F5496;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        mso-ligatures:none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:274674425;
        mso-list-template-ids:-1837596420;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1
        {mso-list-id:342709849;
        mso-list-template-ids:-896250342;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2
        {mso-list-id:636380518;
        mso-list-template-ids:1791110518;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3
        {mso-list-id:1241065959;
        mso-list-template-ids:1986580508;}
@list l4
        {mso-list-id:1456682605;
        mso-list-template-ids:1135623916;}
@list l4:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5
        {mso-list-id:1632711204;
        mso-list-template-ids:-1608249900;}
@list l5:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l5:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">

<div id="782f810a-ba23-45b5-abf2-27bd3727180c" style="width: auto; border: 1px solid #AAB7B8;padding: 12px 20px;margin: 0;margin-bottom:20px;border-radius: 2px;box-sizing: border-box;">
<div style="margin-bottom: 8px";><ul style="display: inline-block;margin: 0;padding: 0;">
<li class="sa-url-list-item" style="display: inline-block;padding-right: 5px;text-decoration: none;list-style-type: none;margin: 0;">
<span><b style="font-size: 14px; font-style: normal; font-weight: 700; line-height: 22px; font-family: 'Amazon Ember', Arial, sans-serif">Attachment protected by Amazon: </b>
</span></li>
<li class="sa-url-list-item" style="display: inline-block;padding-right: 5px;text-decoration: none;list-style-type: none;margin: 0;color: #0073BB !important;">
<span>
<a class="sa-url-a-item" style="font: 14px/22px 'Amazon Ember', Arial, sans-serif;text-decoration: none;" title="JDK-8316241 Analysis.pdf" 
href="https://eu-central-1.secure-attach.amazon.com/c7b94fc4-394c-4db0-82f2-8629a0139ea2/cf788121-393c-4adc-a634-540f090a3e1f">JDK-8316241 Analysis.pdf</a>
</span></li></ul></div>
<label style="margin: 0;padding: 0;font: 12px/22px 'Amazon Ember', Arial, sans-serif;margin:0;line-height: 1.2;">
<span style="margin-right: 8px;">Amazon has replaced the attachment in this email with a download link. Downloads will be available until January 23, 2026, 09:10 (UTC+00:00). <a style="color: #0073BB;font: 12px/22px 'Amazon Ember', Arial, sans-serif;margin:0;" href="https://amazonexteu.qualtrics.com/jfe/form/SV_ehuz6zGo8YnsRKK" target="_blank" rel="noopener noreferrer">Tell us what you think</a></span>
<div>For more information click <a style="color: #0073BB;font: 12px/22px 'Amazon Ember', Arial, sans-serif;margin:0;" href="https://docs.secure-attach.amazon.com/guide" target="_blank" rel="noopener noreferrer">here</a>
</div>
</label>
</div>

<div class="WordSection1">
<p><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">Hi JFR team,<o:p></o:p></span></p>
<p><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">I've been investigating the test failures that caused JDK-8346108 (the revert of JDK-8337994 REDO in JDK21u). This is related to the native memory leak when not recording any JFR events (JDK-8335121).<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:18.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:18.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">Summary<o:p></o:p></span></b></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">Based on our investigation, we believe the JDK-8337994 (REDO) backport to JDK21 failed because it
 appears to depend on API changes introduced in the original JDK-8316241 fix that were never backported to JDK21. Our theory is that the REDO fix assumes the existence of infrastructure that only exists in later mainline releases.</span><b><span style="font-size:18.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none"><o:p></o:p></span></b></p>
<h2><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></h2>
<h2><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">Root Cause Analysis<o:p></o:p></span></h2>
<h2><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">The Missing Prerequisite<o:p></o:p></span></h2>
<p><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">The original JDK-8316241 fix (commit b2a39c576706622b624314c89fa6d10d0b422f86) introduced several key changes to </span><code><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328">jfrTypeSetUtils.hpp/.cpp</span></code><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">:<o:p></o:p></span></p>
<ol start="1" type="1">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo3">
<strong><span style="font-family:"Segoe UI",sans-serif;mso-ligatures:none">API Change</span></strong><span style="font-family:"Segoe UI",sans-serif;mso-ligatures:none">: </span><code><span style="font-size:10.0pt;font-family:Menlo;mso-ligatures:none">should_do_loader_klass(const
 Klass* k)</span></code><span style="font-family:"Segoe UI",sans-serif;mso-ligatures:none"> → </span><code><span style="font-size:10.0pt;font-family:Menlo;mso-ligatures:none">should_do_cld_klass(const Klass* k, bool leakp)</span></code><span style="font-family:"Segoe UI",sans-serif;mso-ligatures:none"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo3">
<strong><span style="font-family:"Segoe UI",sans-serif;mso-ligatures:none">New Data Structure</span></strong><span style="font-family:"Segoe UI",sans-serif;mso-ligatures:none">: Added </span><code><span style="font-size:10.0pt;font-family:Menlo;mso-ligatures:none">_klass_loader_leakp_set</span></code><span style="font-family:"Segoe UI",sans-serif;mso-ligatures:none"> for
 separate tracking of leakp (leak profiler) path klasses<o:p></o:p></span></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo3">
<strong><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">New Function</span></strong><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">: </span><code><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;mso-ligatures:none">get_cld_klass(CldPtr
 cld, bool leakp)</span></code><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none"> in </span><code><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;mso-ligatures:none">jfrTypeSet.cpp</span></code><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none"> that
 properly enqueues CLD klasses via </span><code><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;mso-ligatures:none">JfrTraceId::load()</span></code><code><span style="font-family:"Segoe UI",sans-serif"><o:p></o:p></span></code></li></ol>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><o:p> </o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-family:"Segoe UI",sans-serif">What Happens Without These Changes<o:p></o:p></span></b></p>
<p><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">The REDO fix attempts to use </span><code><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328">get_cld_klass()</span></code><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"> which
 calls </span><code><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328">should_do_cld_klass(klass, leakp)</span></code><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">, but in the JDK21 backport:<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo6">
<span style="font-family:"Segoe UI",sans-serif">JDK21 still has the old API: </span><code><span style="font-size:10.0pt;font-family:Menlo">should_do_loader_klass(const Klass* k)</span></code><span style="font-family:"Segoe UI",sans-serif"> (no leakp parameter)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo6">
<span style="font-family:"Segoe UI",sans-serif">JDK21 lacks </span><code><span style="font-size:10.0pt;font-family:Menlo">_klass_loader_leakp_set</span></code><span style="font-family:"Segoe UI",sans-serif"> for separate tracking<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo6">
<span style="font-family:"Segoe UI",sans-serif">The </span><code><span style="font-size:10.0pt;font-family:Menlo">get_cld_klass()</span></code><span style="font-family:"Segoe UI",sans-serif"> function doesn't exist in the JDK21 codebase<o:p></o:p></span></li></ul>
<p style="margin:1rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-family:"Segoe UI",sans-serif;color:#1F2328">This causes the </span><code><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328">assert(IS_SERIALIZED(class_loader_klass))</span></code><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"> to
 fail in </span><code><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328">write_cld()</span></code><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"> because the CLD's class_loader_klass is never properly enqueued for serialization during
 the leakp path.<o:p></o:p></span></p>
<h3><b><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></b></h3>
<h3><b><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Test Failure Mechanism (TestChunkIntegrity.java)<o:p></o:p></span></b></h3>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">1. TestClassLoader loads MyClass</span></code><code><span style="font-family:Menlo;border:none windowtext 1.0pt;padding:0in"><o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">2. Event commits with clazz = MyClass  <o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">3. JFR rotation writes MyClass to chunk<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">4. MyClass's CLD references TestClassLoader Klass<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">5. BUG: TestClassLoader Klass not serialized (leakp path broken)<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">6. Chunk written with broken reference<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">7. In slowdebug: assert(IS_SERIALIZED(class_loader_klass)) fails<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">8. In release: "Events don't match" when comparing chunks</span></code></pre>
<h2><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></h2>
<h2><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">The Fix<o:p></o:p></span></h2>
<h2><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328;font-weight:normal">I've been able to get a local jdk21u build passing all tests (including slowdebug) by backporting JDK-8316241 and resolving the resulting conflicts. The key
 changes are:</span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328;font-weight:normal"><o:p></o:p></span></h2>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">1. jfrTypeSetUtils.hpp<o:p></o:p></span></b></p>
<p class="MsoNormal" style="background:#F6F8FA"><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in;mso-ligatures:none">// OLD (JDK21 current)<o:p></o:p></span></p>
<p class="MsoNormal" style="background:#F6F8FA"><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in;mso-ligatures:none">bool should_do_loader_klass(const Klass* k);<o:p></o:p></span></p>
<p class="MsoNormal" style="background:#F6F8FA"><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in;mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal" style="background:#F6F8FA"><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in;mso-ligatures:none">// NEW (with leakp support)<o:p></o:p></span></p>
<p class="MsoNormal" style="background:#F6F8FA"><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in;mso-ligatures:none">bool should_do_cld_klass(const Klass* k, bool leakp);</span><span style="font-size:10.0pt;font-family:Menlo;color:#1F2328;mso-ligatures:none"><o:p></o:p></span></p>
<h3><span style="font-size:15.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></h3>
<h3><b><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">2. jfrTypeSetUtils.cpp<o:p></o:p></span></b></h3>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">// Added _klass_loader_leakp_set member</span></code><code><span style="font-family:Menlo;border:none windowtext 1.0pt;padding:0in"><o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">GrowableArray<const Klass*>* _klass_loader_leakp_set;<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in"><o:p> </o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">// Updated implementation<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">bool JfrArtifactSet::should_do_cld_klass(const Klass* k, bool leakp) {<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  assert(k != nullptr, "invariant");<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  assert(_klass_loader_set != nullptr, "invariant");<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  assert(_klass_loader_leakp_set != nullptr, "invariant");<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  return not_in_set(leakp ? _klass_loader_leakp_set : _klass_loader_set, k);<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">}</span></code></pre>
<h3><span style="font-size:15.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></h3>
<h3><b><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">3. jfrTypeSet.cpp - Added get_cld_klass()<o:p></o:p></span></b></h3>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">static inline KlassPtr get_cld_klass(CldPtr cld, bool leakp) {</span></code><code><span style="font-family:Menlo;border:none windowtext 1.0pt;padding:0in"><o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  if (cld == nullptr) {<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">    return nullptr;<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  }<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  assert(leakp ? IS_LEAKP(cld) : used(cld), "invariant");<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  KlassPtr cld_klass = cld->class_loader_klass();<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  if (cld_klass == nullptr) {<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">    return nullptr;<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  }<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  if (should_do_cld_klass(cld_klass, leakp)) {<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">    if (current_epoch()) {<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">      // KEY FIX: Enqueue the klass for serialization<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">      JfrTraceId::load(cld_klass);<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">    } else {<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">      artifact_tag(cld_klass, leakp);<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">    }<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">    return cld_klass;<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  }<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">  return nullptr;<o:p></o:p></span></code></pre>
<pre style="background:#F6F8FA"><code><span style="font-family:Menlo;color:#1F2328;border:none windowtext 1.0pt;padding:0in">}</span></code></pre>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:18.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:18.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:18.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">Proposed Action<o:p></o:p></span></b></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">Based on this, it appears that backporting JDK-8337994 (REDO) alone may not be sufficient, and that
 some or all the prerequisite infrastructure changes from JDK-8316241 may also need to be backported.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">Additionally, there may be other upstream commits (such as
<a href="https://github.com/openjdk/jdk/commit/e2d6023cb9667dc9911e0af421d6dd0c78f6bf58">
8323631</a>) in JDK24 that were made on top of JDK-8316241 that could also be required for the fix to not cause other possible errors. We would appreciate guidance on identifying any additional changes that might need to be included in the backport.
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;mso-ligatures:none">If this direction makes sense, I'm happy to prepare a proper patch for review.<o:p></o:p></span></p>
<h2><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></h2>
<h2><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">References<o:p></o:p></span></h2>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo9">
<span style="font-family:"Segoe UI",sans-serif"><a href="https://bugs.openjdk.org/browse/JDK-8335121">JDK-8335121</a>: Native memory leak when JFR is enabled but no events are emitted<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo9">
<span style="font-family:"Segoe UI",sans-serif"><a href="https://github.com/openjdk/jdk/commit/b2a39c576706622b624314c89fa6d10d0b422f86#diff-e9a35c652aa2e65265e7027d3093298a6c59d2137cbf3fa6a5b25b895d77beb1L73">JDK-8316241</a>: Test jdk/jdk/jfr/jvm/TestChunkIntegrity.java
 failed (original fix)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo9">
<span style="font-family:"Segoe UI",sans-serif"><a href="https://github.com/openjdk/jdk/commit/6a9a867d645b8fe86f4ca2b04a43bf5aa8f9d487">JDK-8337994</a>: [REDO] Native memory leak when not recording any events<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo9">
<span style="font-family:"Segoe UI",sans-serif"><a href="https://bugs.openjdk.org/browse/JDK-8346108">JDK-8346108</a>: Revert of REDO in JDK21u due to test failures<o:p></o:p></span></li></ul>
<p class="MsoNormal" style="margin-top:3.0pt;mso-margin-bottom-alt:auto"><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-top:3.0pt;mso-margin-bottom-alt:auto"><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-top:3.0pt;mso-margin-bottom-alt:auto"><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">Best Regards,
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-top:3.0pt;mso-margin-bottom-alt:auto"><span style="font-family:"Segoe UI",sans-serif;color:#1F2328">Ozan<o:p></o:p></span></p>
<p><span style="font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>