Skip to content

8268635: Corrupt oop in ClassLoaderData#4701

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

Closed
wants to merge 1 commit into from

Conversation

coleenp
Copy link
Contributor

@coleenpcoleenp commented Jul 7, 2021

We worked on writing a test for this but weren't successful. Based on analysis by @stefank this missing call may have been the cause of the crash.
Tested with tier1-3.


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed

Issue

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/4701/head:pull/4701
$ git checkout pull/4701

Update a local copy of the PR:
$ git checkout pull/4701
$ git pull https://git.openjdk.java.net/jdk pull/4701/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 4701

View PR using the GUI difftool:
$ git pr show -t 4701

Using diff file

Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/4701.diff

@bridgekeeper
Copy link

👋 Welcome back coleenp! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdkopenjdkbot added the rfr Pull request is ready for review label Jul 7, 2021
@openjdk
Copy link

openjdkbot commented Jul 7, 2021

@coleenp The following label will be automatically applied to this pull request:

  • hotspot-runtime

When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command.

@openjdkopenjdkbot added the hotspot-runtime hotspot-runtime-dev@openjdk.org label Jul 7, 2021
@mlbridge
Copy link

mlbridgebot commented Jul 7, 2021

Webrevs

Copy link
Member

@iklamiklam left a comment

Choose a reason for hiding this comment

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

LGTM

@coleenp
Copy link
ContributorAuthor

Thanks Ioi. Sorry about the force push. The github actions were failing because my repo was out of date.

@openjdk
Copy link

openjdkbot commented Jul 7, 2021

@coleenp This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

After integration, the commit message for the final commit will be:

8268635: Corrupt oop in ClassLoaderData Reviewed-by: iklam, dholmes 

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been 2 new commits pushed to the master branch:

  • 3d090e7: 8267625: AARCH64: typo in LIR_Assembler::emit_profile_type
  • a9e2010: 8268425: Show decimal nid of OSThread instead of hex format one

Please see this link for an up-to-date comparison between the source branch of this pull request and the master branch.
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdkopenjdkbot added the ready Pull request is ready to be integrated label Jul 7, 2021
Copy link
Member

@dholmes-oradholmes-ora left a comment

Choose a reason for hiding this comment

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

Hi Coleen,

Given the code in add_handle this change seems appropriate. But in looking at the other code I did notice that this call to record_modified_oops in ClassLoaderData::record_dependency seems redundant:

> Handle dependency(Thread::current(), to); > add_handle(dependency); > // Added a potentially young gen oop to the ClassLoaderData > record_modified_oops(); > 

And it did raise a question for me as to whether the code that checks (and potentially clears) _modified_oops can run concurrently with this code, as we set the flag before we actually do the addition in the other methods?

Thanks,
David

@navyxliu
Copy link
Member

Hi, Coleen,

Thank you for taking this issue. your code change looks good to me.

IIUC, this PR covers the code path fromModuleEntry::set_shared_protection_domain, where needs record_modified_oops().
ClassLoaderData::record_dependency() seems to have a redundant record_modified_oops, but I don't think it affects correctness.

thanks,
--lx

@coleenp
Copy link
ContributorAuthor

Thanks David and Xin, thanks for noticing the clearly redundant record_modified_oops. It was left over from when dependency oops were not in the _handles area.
@dholmes-ora Serial and Parallel GC clear modified oops in a safepoint. I don't remember how G1 used this field. It has some mechanism of claiming the CLD. Maybe @tschatzl or Kim can check it out.

@coleenp
Copy link
ContributorAuthor

Thanks @iklam for the review and help trying to write the test.
/integrate

@openjdk
Copy link

openjdkbot commented Jul 7, 2021

Going to push as commit 3586a23.
Since your change was applied there have been 8 commits pushed to the master branch:

  • bffb1a7: 8269923: runtime/jni/checked/TestPrimitiveArrayCriticalWithBadParam.java failed with "FATAL ERROR in native method: Primitive type array expected but not received for JNI array operation"
  • 77a5b7b: 8269761: idea.sh missing .exe suffix when invoking javac on WSL
  • 248aa50: 8269294: Verify_before/after_young_collection should execute all verification
  • 18b80c7: 8269908: Move MemoryService::track_memory_usage call into G1MonitoringScope
  • a685011: 8269022: Put evacuation failure string directly into gc=info log message
  • 72530ef: 8269574: C2: Avoid redundant uncommon traps in GraphKit::builtin_throw() for JVMTI exception events
  • 3d090e7: 8267625: AARCH64: typo in LIR_Assembler::emit_profile_type
  • a9e2010: 8268425: Show decimal nid of OSThread instead of hex format one

Your commit was automatically rebased without conflicts.

@openjdkopenjdkbot closed this Jul 7, 2021
@openjdkopenjdkbot added integrated Pull request has been integrated and removed ready Pull request is ready to be integrated rfr Pull request is ready for review labels Jul 7, 2021
@openjdk
Copy link

openjdkbot commented Jul 7, 2021

@coleenp Pushed as commit 3586a23.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

@coleenpcoleenp deleted the cld-pd branch July 7, 2021 12:43
@earthling-amzn
Copy link
Contributor

/backport jdk15u-dev

@openjdk
Copy link

openjdkbot commented Jul 8, 2021

@earthling-amzn Unknown command backport - for a list of valid commands use /help.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hotspot-runtimehotspot-runtime-dev@openjdk.orgintegratedPull request has been integrated
5 participants
@coleenp@navyxliu@earthling-amzn@iklam@dholmes-ora
close