[JDK-8312534] [linux x86] assert in g1ConcurrentMark.cpp: Overflow during reference processing

Thomas Schatzl thomas.schatzl at oracle.com
Fri Aug 4 10:48:13 UTC 2023


Hi,

On 03.08.23 10:49, Tham To Thi Hong wrote:
> Dear members of the hotspot-gc-dev mailing list,
> 
> My name is Tham To, and I am a new contributor interested in contributing to the OpenJDK project. I have encountered a bug while using JDK, specifically "[JDK-8312534] [linux x86] assert in g1ConcurrentMark.cpp: Overflow during reference processing." This issue occurs consistently on the x86 platform and has been observed multiple times over the past few weeks.
> 
> I have reviewed the details of this bug on the OpenJDK bug tracking page [JDK-8312534] and noticed that it has been marked as "OPEN" with a priority of P3. Additionally, it affects JDK version 22, and the fix is planned for version 22.
> 

Fwiw JDK-8312534 has been closed as a duplicate of the much longer 
existing JDK-8280087, which is classified as an enhancement. But type of 
issues and priority are mostly an Oracle thing, external contributors 
typically just pick up and do whatever itches them.

We are welcoming any contributions. Also thank you for providing a 
notice that you want to work on something.

> After further investigation, I am interested in contributing to resolve this issue. However, as a new contributor, I seek guidance on how to get assigned to this bug and initiate a discussion with the community to address it.
> 
> I kindly request your assistance in providing instructions on how to start contributing to this bug and

If you have never contributed or looked at the Hotspot (marking) code 
before, I strongly recommend starting off with a different, less 
technical issue. Particularly the (concurrent) marking code is very old, 
badly written, und(erdo)ocumented, and changes in one place can have 
unforeseen consequences in other uses.

With a few contributions done, one knows the code better, and will also 
get a JBS account and can assign oneselves to them more easily.

As for this particular issue, if I were to implement this, I would look 
into the actual mark stack overflow expansion handling, the code 
enclosed by "if (_cm->has_overflown())" around g1ConcurrentMark.cpp:2815.

There, between the two "sync barriers", the existing mark stack 
expansion and setup for restarting marking from scratch (which in this 
case should not happen) happens.

In this case, the global mark stack needs to be expanded while there are 
still elements on it, which seems a bit onerous.
I.e. the global mark stack is a huge block of memory, where two linked 
lists are threaded through which need to be fixed up after copying elements.

 > how to create an Oracle email account to participate in discussions 
on the mailing list.

You do not need an Oracle email account for registering to the mailing 
list, indeed, this email from you has been properly received by all 
members of this mailing list.

Github registration to send out a pull request can (and should) also be 
done using your email account too.

> 
> Thank you for your support, and I look forward to your valuable guidance.
> 
> Best regards,
> 
> Tham To(Ms.)
> Software Engineer I

Hth,
   Thomas




More information about the hotspot-gc-dev mailing list