Skip to content

Pass NULL as threadObject to walkContinuationStackFrames in GC #19487

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

Merged
merged 1 commit into from
May 14, 2024

Conversation

LinHu2016
Copy link
Contributor

GC Thread scanContinuationNativeSlots via walkContinuationStackFrames(), new threadObject parameter is required for calling walkContinuationStackFrames, retrieving the virtual thread Object during GC might trigger a read barrier in concurrent scavenger mode, because threadObject is not neccessary for GC case, so pass NULL as threadObject for call function walkContinuationStackFrames() to aviod the potential assertion.

fix: #19486

Signed-off-by: hulin [email protected]

GC Thread scanContinuationNativeSlots via walkContinuationStackFrames(),
new threadObject parameter is required for calling
walkContinuationStackFrames, retrieving the virtual thread Object during
GC might trigger a read barrier in concurrent scavenger mode, because
threadObject is not neccessary for GC case, so pass NULL as threadObject
for call function walkContinuationStackFrames() to aviod the potential
assertion.

Signed-off-by: hulin <[email protected]>
@amicic
Copy link
Contributor

amicic commented May 13, 2024

While this is primarily meant to fix a problem with GC scanning, I believe passing null as VT thread object is also ok with other GC users, specifically a couple of 'walkers', like ReferenceChainWalker.

@amicic
Copy link
Contributor

amicic commented May 13, 2024

jenkins test sanity aix,win jdk21

@amicic amicic merged commit bcbe4b2 into eclipse-openj9:master May 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ASSERTION FAILED StandardAccessBarrier.cpp:867: ((false && (_scavenger->isMutatorThreadInSyncWithCycle(env))))
3 participants