<div dir="auto">Hi Tobias,</div><div dir="auto"><br></div><div dir="auto">Thanks for fixing this subtle and annoying bug. Looking forward to having the fix accepted so we can start backporting it. </div><div dir="auto"><br></div><div dir="auto">Cheers,</div><div dir="auto"><br></div><div dir="auto">Jaroslav</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed 1. 3. 2023 at 16:17, Tobias Hartmann <<a href="mailto:tobias.hartmann@oracle.com">tobias.hartmann@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jaroslav,<br>
<br>
I finally got the time to investigate this properly and found the root cause. The fix is out for<br>
review: <a href="https://github.com/openjdk/jdk/pull/12806" rel="noreferrer" target="_blank">https://github.com/openjdk/jdk/pull/12806</a><br>
<br>
Thanks again for reporting this!<br>
<br>
Best regards,<br>
Tobias<br>
<br>
<br>
On 07.02.22 23:20, <a href="mailto:dean.long@oracle.com" target="_blank">dean.long@oracle.com</a> wrote:<br>
> It turns out the problem with DebugNonSafepoints is a known issue. See<br>
> <a href="https://bugs.openjdk.java.net/browse/JDK-8201516" rel="noreferrer" target="_blank">https://bugs.openjdk.java.net/browse/JDK-8201516</a>.<br>
> <br>
> dl<br>
> <br>
> On 2/7/22 7:58 AM, Jaroslav Bachorík wrote:<br>
>> Hi Dean,<br>
>><br>
>> The first thing I want to mention is that I isolated this behaviour<br>
>> to be triggered by `-XX:DebugNonSafepoints` JVM arg. When this option<br>
>> is not specified I don't see the pattern at all.<br>
>><br>
>> I have extracted a self-contained (almost) reproducer - it is not a<br>
>> single class, unfortunately, but building and running it is as simple<br>
>> as executing the attached `./run.sh`<br>
>> The reproducer has a weak point, though - I am not able to get the<br>
>> `*synchronization entry` pattern manifesting at the same locations.<br>
>> Therefore it is more of PoC than a full test case - it requires going<br>
>> to the assembly print out and searching for `*synchronization entry`<br>
>> manually.<br>
>><br>
>> The project can be found here -<br>
>> <a href="https://urldefense.com/v3/__https://drive.google.com/file/d/1Z6rX4NpvNpctVA3AuYfaG0Qxjd4KjrED/view?usp=sharing__;!!ACWV5N9M2RV99hQ!f9PhKRCRHuSdH__32-XrLtTdu0RoQCQz8wJGjvsqF83SjHg4R2_vAcUJOJFYqd4$" rel="noreferrer" target="_blank">https://urldefense.com/v3/__https://drive.google.com/file/d/1Z6rX4NpvNpctVA3AuYfaG0Qxjd4KjrED/view?usp=sharing__;!!ACWV5N9M2RV99hQ!f9PhKRCRHuSdH__32-XrLtTdu0RoQCQz8wJGjvsqF83SjHg4R2_vAcUJOJFYqd4$</a><br>
>> It is a zipped gradle java project and the only thing it requires is a<br>
>> working Java env.<br>
>><br>
>> Thanks!<br>
>><br>
>> -JB-<br>
>><br>
>> On Sun, Feb 6, 2022 at 6:45 AM <<a href="mailto:dean.long@oracle.com" target="_blank">dean.long@oracle.com</a>> wrote:<br>
>>><br>
>>> On 2/5/22 12:58 PM, Jaroslav Bachorík wrote:<br>
>>>> Is this the hard limitation of what is possible to do with the debug<br>
>>>> data at this level of optimization? Are some boundaries irreversibly<br>
>>>> lost here?<br>
>>><br>
>>> It's quite likely you've discovered a bug that can be fixed. If you<br>
>>> could narrow it down to a self-contained test case, that would really help.<br>
>>><br>
>>> dl<br>
</blockquote></div></div>