Invalid code generated by C2 compiler in OpenJDK 21
David Holmes
david.holmes at oracle.com
Mon Feb 26 04:39:28 UTC 2024
Hi,
<snip>
> On 15/12/23 3:42 pm, Antoine DESSAIGNE wrote:
>> Hello everyone,
>>
>> I've found an issue while migrating to OpenJDK 21. A valued local
>> variable (effectively final) has its value removed and it throws a
>> NullPointerException. Unfortunately, I cannot provide the source code
>> and the data to reproduce the issue, and I couldn't create a smaller
>> code snippet to show the issue. That said, I'll happily show the code
>> and perform many tests during calls.
>>
>> Here's what I did so far to diagnose the issue.
>>
>> I bisected the repository to find where the regression comes from. I
>> found this commit 3696711efa5 [1] but it's a merge so I bisected the
>> branch and found 10737e168c9 [2]. Looking at this commit, I have no
>> idea how it could introduce this kind of regression.
It is likely because that commit has a bug in it, fixed recently by
https://bugs.openjdk.org/browse/JDK-8322282
The fix is in 21.0.3
Cheers,
David
-----
>>
>> Then, thanks to the guidance from Aleksey Shipilëv, I tested many things
>> * Issue does *not* happen with the following
>> flags: -Xint, -XX:-TieredCompilation, -XX:TieredStopAtLevel=1, -XX:TieredStopAtLevel=2, -XX:TieredStopAtLevel=3
>> * Issue also happens with fastdebug builds of OpenJDK, without
>> crashing due to assertions
>> * Issue still happens in the latest version of the code
>> (commit b31454e3623)
>> * Issue happens no matter which GC is used, I tried SerialGC,
>> ParallelGC, G1GC, and ShenandoahGC
>>
>> The tests were performed in Docker containers running on 4 different
>> hosts.
>>
>> Therefore it looks like C2 is generating an invalid assembly code.
>> Unfortunately, I'm not great with assembly and the generated assembly
>> is quite big (main code is around 20k).
>>
>> Do you have an idea of why this is happening? Do you know what test I
>> can run? If one of you is available, we can schedule calls for me to
>> show you the code and my tests. Thank you very much for your assistance.
>>
>> Have a nice day,
>>
>> Antoine DESSAIGNE
>>
>> [1]
>> https://github.com/openjdk/jdk/commit/3696711efa566fb776d6923da86e17b0e1e22964
>> [2]
>> https://github.com/openjdk/jdk/commit/10737e168c967a08e257927251861bf2c14795ab
>>
>>
More information about the hotspot-runtime-dev
mailing list