-
Notifications
You must be signed in to change notification settings - Fork 729
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error. compiler crashed (exit code 4) - cannot access unnamed package #20786
Comments
Issue Number: 20786 |
I'm not sure what to make of this. The compile error doesn't make sense, and I don't know why |
This is blocking proper running of openjdk tests on xlinux and xmac. I'll check if it affects 0.49. |
I see these aqatest changes between the last working and first failing, but it may not be the correct repo/thing to look at. |
The jars in the error messages aren't included in the list of third party dependent jars. |
There is jtreg change adoptium/TKG#645. But I am not sure if it is related to this issue |
I didn't see a TKG change between last working and first failing. |
I see the following in failure output, which includes the problematic jar files. Are we somehow missing some third party dependent jars? |
The jars in the error are from jtreg tar: https://ci.adoptium.net/job/test.getDependency/lastSuccessfulBuild/artifact/jtreg_7_3_1_1.tar.gz Since the latest jtreg jar got generated on Dec 11 (today), rerun the test in Grinder: https://hyc-runtimes-jenkins.swg-devops.com/job/Grinder/45785/ |
Not sure why the grinder is running jdk_security3, which is an extended.openjdk target. |
Trying failed test targets. |
|
OpenJ9 code changes. e1af88f...6a1113a @0xdaryl pls take a look, I'm guessing a x86 change is causing the problem. |
Taking a look. . . . |
Simple grinder on the failing JVM Same grinder on the older JVM passed. I tried to create a simple test case, but it doesn't recreate the problem. Maybe with the correct JIT options.
|
I tried capturing core files and jitdumps when a Now I'm trying to work back through some recent pull requests to figure out which might have introduced/exposed the problem. |
I'm able to reproduce this failure intermittently locally. Unfortunately if I try to capture a log file for when it first compiles
This is in the middle of a loop at that's iterating over elements of the array I'll try to see whether I can figure out how that might happen from a jitdump. |
@hzongaro can you identify the problem change so we can back it out until the problem can be resolved? |
I think I've figured out where in the generated code things are going awry, but I haven't yet figured out whether a recent change caused it. I suspect it was a latent problem that's just suddenly become more apparent. The problem actually occurs before the loop in Trees before instruction selection
Note that the value stored to In the Mixed Mode Disassembly, the value of Code from Mixed Mode Disassembly
I'm just trying to get traces of Register Allocation to figure out how things go wrong. |
I've figured out the cause of the problem. It was in fact a recent change, shortly prior to the range of OpenJ9 commits e1af88f...6a1113a The relevant instructions before register allocation:
and after register allocation
Looking at the trace of register allocation, notice that at the jump to L0150 below, the allocator is marking GPR_0114 as eligible for better spill placement. However, better spill placement is only supposed to be enabled outside of sections of code marked as "Internal control flow". Looking at the instructions above, L0144 and L0145 are marked as the start and end of internal control flow, respectively, and the jump to L0150 appears between them.
The reason the register allocator thinks that that jump is not within a range of instructions marked for internal control flow is that later in the instruction stream there appears a Start of internal control flow label that is missing its corresponding End of internal control flow label:
I'm just testing a fix and will open a pull request. The problem only affects JDK 21 and 23 on x86. |
Failure link
From internal Test_openjdk21_j9_extended.openjdk_x86-64_linux_testList_0 (ubu20x86-svl-rt2-1)
Rerun in Grinder - Change TARGET to run only the failed test targets
Optional info
Failure output (captured from console output)
javac.20241207_105852.args
50x internal Grinder - failed at
rhel8x86-svl-rt1-1
and passed in the other 3 machines (rhel9x86-rt-2, rtj-rhel8x86-rtp-test-xemvx-1, cent9x86-rtp-rt1-1)openjdk21_j9_extended.openjdk_x86-64_linux jdk_security3_1_FAILED
javac.20241207_100055.args
The text was updated successfully, but these errors were encountered: