-
Notifications
You must be signed in to change notification settings - Fork 720
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
GC crashed with an assertion failure in Scavenger.cpp #17052
Comments
For the rest 11, see issue17052rest11.tar.gz For convenience, I summarize them in the following table. I hope this can help you, simplifying your work (I know it's somewhat a headache, so I'm sorry). I put each test per directory named In addition, besides the (perhaps) unique symptom, there're chances that different tests can lead to the same crash symptom because of their non-determinism (and some tests can even trigger crashes that I've reported before like #15476). This indicate they are maybe, not unique?
|
Most of these assertions in GC might be triggered by heap corruption. There are a very few of them I need to double check, the connection with possible heap corruption is not obvious. |
I walked this list of assertions/crashes in GC. There is only one of them can not be explained by heap corruption directly:
If somebody needs triaging of failures in GC listed above please let me know, I will help with this. Of course, system core is necessary. |
Oops. That happens to be the test I was unable to reproduce (and my procedure deleted the log periodically)..... Still hope that test could be helpful, to some extend. I'll try again to see if I can reproduce it in more runs. |
I have reproduced the failure mentioned by @dmitripivkine. See logs: issue17052rest11.14.tar.gz. I edited and also updated the |
The problem starts at attempt to allocate object with 1836453136 bytes size. With
@connglli Do you know is allocation of this array of such size is intentional for this test load? |
@connglli The rational for question above:
|
@dmitripivkine The code is generated by our fuzzers. In our fuzzer implementation, we have restricted the size of any array allocation. I have checked the code again, and didn't notice any explicit array allocation of which the size is larger than 524,288(=256x256x8) bytes. But we did generate some library method calls like those of Double, Float, BigDecimal, BigInteger, etc. I suppose they don't have some implicit large array allocations, either (even though I'm not quite sure). |
Could you please check the stack trace such that we can get some glue on which array allocation caused this assertion failure? By the way, I'm sorry I'm on my vacation so I might not be that on call. |
|
Oh sure yes, it is a library call How about the others, I didn't notice |
An assertion in |
I was able to reproduce this failure with this option:
but not with
This bears some resemblance to the situation described in issue #17249, so it could be related. I'll assign it to myself for now, in case this is a duplicate. |
I haven't been able to make progress on this one for 0.41. I will move it to the 0.43 release. |
I can still reproduce the GC assert with the fix for #17249. This issue is also reproducible with
The GC assert happens with
|
Thanks for checking into that, Annabelle @a7ehuo. Brad @BradleyWood, following that investigation I'm now wondering whether this might be a duplicate of issue #17045, which you've been investigating. |
Yes, I think its the same problem. I see the same kind of snippet.
I'm guessing the loop limit transformation is off by one. Does changing |
Yes. The test passes with the change
|
I'll reassign this to Brad @BradleyWood, as it looks like this is likely a duplicate of #17045 |
Just post what I have observed on the failure from this test. Hope it helps. Brad will continue the investigation.
I noticed the difference between
|
Sorry I realized my previous logging is incorrect. It is the
|
Those values are determined by the type of compare operator. I guess the logic doesn't hold when the indices are product of two induction variables? |
@BradleyWood, may I ask you to check whether this problem was fixed by either or both the OMR pull requests eclipse-omr/omr#7237 and eclipse-omr/omr#7238? |
@hzongaro Its fixed |
Java version
Javac version
Code and summary of the problem
Code and logs: see issue17052.tar.gz. The code
Test.java
is a bit long because I ain't able to reduce it.This seems to be the most reproducible problem out of the 12 as mentioned in our previous chat. I can reproduce exactly the same assertion failure (
Scavenger.cpp:1669
) 3 times out of 4 runs. I put logs of all these 4 runs in the link above, each in a directory namedlog.XXXXX
. Hope the same frequency applies to you too. It makes OpenJ9 to crash in GC and should be a JIT bug since there aren't any crash if-Xint
is enabled.The test exited with code 255 and the assertion log (
log.bOTRV
,log.D1Uma
,log.RtuV0
) looks likeThe last run (
log.d3ZAp
) crashed with a different assertion failure:The text was updated successfully, but these errors were encountered: