Skip to content

Fix resetting global lists issue in CRIU reinitializeForRestore - #19426

Merged
amicic merged 1 commit into
eclipse-openj9:masterfrom
LinHu2016:master
May 3, 2024
Merged

Fix resetting global lists issue in CRIU reinitializeForRestore#19426
amicic merged 1 commit into
eclipse-openj9:masterfrom
LinHu2016:master

Conversation

@LinHu2016

@LinHu2016 LinHu2016 commented May 1, 2024

Copy link
Copy Markdown
Contributor

We need to reset the root of global lists(unfinalizedObjectLists,
OwnableSynchronizerObjectLists, ContinuationObjectLists) for rebuilding
the lists(array of sublists, the size of array match to gcThreadCount),
in case the gcThreadCount in restore env is more than the gcThreadCount
in original env.
Backup and reset root of global lists before reinitializeForRestore
and restore the root of global lists if the lists were not rebuilt
during reinitializeForRestore.

fix:#19421

@JasonFengJ9

Copy link
Copy Markdown
Member

This PR fixed j9mm.107 * ** ASSERTION FAILED ** at openj9-openjdk-jdk/openj9/runtime/gc_api/HeapIteratorAPI.cpp:543: ((false && (__null != continuationObjectList))) discovered by

/* reset the root of global lists for rebuilding the lists, only in case the gcThreadCount in restore env is more than in original env. */
_extensions->unfinalizedObjectLists = NULL;
_extensions->setOwnableSynchronizerObjectLists(NULL);
_extensions->setContinuationObjectLists(NULL);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not related to the problem you are fixing, but seems like we should be reseting ReferenceLists too

@amicic

amicic commented May 1, 2024

Copy link
Copy Markdown
Contributor

try it differently (what is more in line with how we process these lists in context of Clearing)

  • backup the head pointers and reset them before region loop iteration (which might rebuild the lists and set the head pointers)
  • if head pointers are still null after the region iteration, then restore them from backup, otherwise leave them

we need to reset the root of global lists(unfinalizedObjectLists,
OwnableSynchronizerObjectLists, ContinuationObjectLists) for rebuilding
the lists(array of sublists, the size of array match to gcThreadCount),
in case the gcThreadCount in restore env is more than the gcThreadCount
in original env.
Backup and reset root of global lists before reinitializeForRestore
and restore the root of global lists if the lists were not rebuilt
during reinitializeForRestore.

Signed-off-by: hulin <linhu@ca.ibm.com>
@amicic

amicic commented May 1, 2024

Copy link
Copy Markdown
Contributor

jenkins test sanity aix,win jdk21

@amicic

amicic commented May 1, 2024

Copy link
Copy Markdown
Contributor

jenkins test sanity.functional xLinux jdk21

3 similar comments
@amicic

amicic commented May 2, 2024

Copy link
Copy Markdown
Contributor

jenkins test sanity.functional xLinux jdk21

@amicic

amicic commented May 2, 2024

Copy link
Copy Markdown
Contributor

jenkins test sanity.functional xLinux jdk21

@amicic

amicic commented May 3, 2024

Copy link
Copy Markdown
Contributor

jenkins test sanity.functional xLinux jdk21

@amicic

amicic commented May 3, 2024

Copy link
Copy Markdown
Contributor

xLinux repetedly failing due to network issues

@amicic
amicic merged commit 2c34fcf into eclipse-openj9:master May 3, 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.

4 participants