Skip to content

Pass NULL as threadObject to walkContinuationStackFrames in GC - #19487

Merged
amicic merged 1 commit into
eclipse-openj9:masterfrom
LinHu2016:default
May 14, 2024
Merged

Pass NULL as threadObject to walkContinuationStackFrames in GC#19487
amicic merged 1 commit into
eclipse-openj9:masterfrom
LinHu2016:default

Conversation

@LinHu2016

Copy link
Copy Markdown
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 linhu@ca.ibm.com

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 <linhu@ca.ibm.com>
@amicic

amicic commented May 13, 2024

Copy link
Copy Markdown
Contributor

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

amicic commented May 13, 2024

Copy link
Copy Markdown
Contributor

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