-
Notifications
You must be signed in to change notification settings - Fork 155
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
8186787: clang-4.0 SIGSEGV in Unsafe_PutByte #553
base: master
Are you sure you want to change the base?
Conversation
👋 Welcome back zzambers! A progress list of the required criteria for merging this PR into |
❗ This change is not yet ready to be integrated. |
This backport pull request has now been updated with issue from the original commit. |
Log from failing (segfaulting) tests (without fix, for reference): |
@zzambers This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration! |
keep open |
@zzambers This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration! |
3 similar comments
@zzambers This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration! |
@zzambers This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration! |
@zzambers This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration! |
@zzambers This pull request has been inactive for more than 8 weeks and will now be automatically closed. If you would like to continue working on this pull request in the future, feel free to reopen it! This can be done using the |
/open |
@zzambers This pull request is now open |
@adinn @tstuefe @theRealAph Could you please help review this? We see crashes of this in GHA, so it looks to fix a real bug. Then again it's fairly late to touch this area in JDK 8u. Thoughts? |
Btw, as GHA logs have expired and this is now last remaining issue showing in tier1 on Mac, I have tried to rebase these changes in separate branch (to retest on head). (I can force-push rebased change here if desired) |
@jerboaa I think this is fine to backport. Adding a volatile qualifier to the access cannot really do any harm as it has the very limited effect of stopping the C++ compiler from reordering the volatile field access write relative to other volatile field accesses within the current thread's instruction stream. Since that is actually what is required here I cannot see any real risk. My real concern is that the introduction of volatile is clearly flagged in comments and happens at a point where it is most obvious what is going on and why. |
4f40e7a
to
6a3222d
Compare
@zzambers Please do not rebase or force-push to an active PR as it invalidates existing review comments. Note for future reference, the bots always squash all changes into a single commit automatically as part of the integration. See OpenJDK Developers’ Guide for more information. |
@adinn thank you for the review I added comment, as you have suggested. (As in the end, approach with DEFINE_GETSETOOP is not used, I kept it as it is.) I rebased changes on current master, to avoid some unrelated, already fixed failures in GHA testing. |
@zzambers It's fine as it is. |
|
GHA tests: OK (fixes Mac tests) Failures:
|
/approval request Fix to unsafe to avoid tier1 failures (crashes) on Mac, small change, low risk, GHA tests OK |
This backport fixes failures (segfaults) in following tests which appeared after macos update:
Backport differs from original changeset, because there were significant changes/refactoring in unsafe.
Notes:
addr
(MemoryAccess
class), to volatile. Otherwise it is basically just refactoring.MemoryAccess
is used byUnsafe_{Set,Put}*
andUnsafe_{Set,Put}*Volatile
functions, defined usingDEFINE_GETSETOOP
andDEFINE_GETSETOOP_VOLATILE
macrosMemoryAccess
class, so equivalent pointers, in functions mentioned higher, are cast to volatile, to achieve same effectTesting:
Tier1: OK (fixes
sun/misc/CopyMemory.java
andcompiler/unsafe/OpaqueAccesses.java
tests on macos, 1 failure on Linux x86 is timeout - seems unrelated, macos failures explained here: #544 (comment))Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk8u-dev.git pull/553/head:pull/553
$ git checkout pull/553
Update a local copy of the PR:
$ git checkout pull/553
$ git pull https://git.openjdk.org/jdk8u-dev.git pull/553/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 553
View PR using the GUI difftool:
$ git pr show -t 553
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk8u-dev/pull/553.diff
Using Webrev
Link to Webrev Comment