Fwd: Invalid code generated by C2 compiler in OpenJDK 21

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Dec 21 21:54:33 UTC 2023


Adding hotspot-compiler-dev, asd I don't think this is a javac compiler 
issue?

Maurizio



-------- Forwarded Message --------
Subject: 	Invalid code generated by C2 compiler in OpenJDK 21
Date: 	Fri, 15 Dec 2023 11:12:15 +0100
From: 	Antoine DESSAIGNE <antoine.dessaigne at gmail.com>
To: 	compiler-dev at openjdk.org



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.

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-compiler-dev/attachments/20231221/1b9ee722/attachment-0001.htm>


More information about the hotspot-compiler-dev mailing list