-
Notifications
You must be signed in to change notification settings - Fork 18k
runtime: always acquire M when acquiring locks by rank #66276
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
Conversation
This PR (HEAD: 2f40d7d) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/571056. Important tips:
|
Message from Rhys Hiltner: Patch Set 1: Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 1: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2024-03-18T17:06:29Z","revision":"58e504717bcf8903f34c44f00a973989d3290872"} Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Rhys Hiltner: Patch Set 1: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 1: This CL has failed the run. Reason: Tryjob golang/try/x_tools-gotip-linux-amd64 has failed with summary (view all results): FAILURE
Error: Links: Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 1: LUCI-TryBot-Result-1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
This PR (HEAD: 36bae22) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/571056. Important tips:
|
Message from Rhys Hiltner: Patch Set 3: Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 3: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2024-03-18T18:26:05Z","revision":"fa94ff5f0523957ce54ab549cccdfe36da574a1d"} Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Rhys Hiltner: Patch Set 3: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 3: This CL has failed the run. Reason: Tryjob golang/try/gotip-linux-amd64-staticlockranking has failed with summary (view all results): FAILURE
Error: Links: Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 3: LUCI-TryBot-Result-1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
This PR (HEAD: 1d02685) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/571056. Important tips:
|
Message from Rhys Hiltner: Patch Set 4: Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 4: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2024-03-18T21:27:04Z","revision":"9029c99afad745ee5d69813df2c177fe434bb1c8"} Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Rhys Hiltner: Patch Set 4: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 4: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 4: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Michael Knyszek: Patch Set 4: (4 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Profiling of runtime-internal locks checks gp.m.locks to see if it's safe to add a new record to the profile, but direct use of acquireLockRank can change the list of the M's active lock ranks without updating gp.m.locks to match. The runtime's internal rwmutex implementation makes a point of calling acquirem/releasem when manipulating the lock rank list, but the other user of acquireLockRank (the GC's Gscan bit) relied on the GC's invariants to avoid deadlocks. Codify the rwmutex approach by renaming acquireLockRank to acquireLockRankAndM and having it include a call to aquirem. Do the same for release. For golang#64706 For golang#66004 Change-Id: Id18e4d8de1036de743d2937fad002c6feebe2faf
This PR (HEAD: 160577b) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/571056. Important tips:
|
Message from Rhys Hiltner: Patch Set 5: Commit-Queue+1 (3 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 5: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2024-04-16T20:31:54Z","revision":"783081d4941107edd2fd5ce56e109c273a654075"} Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Gopher Robot: Patch Set 5: Congratulations on opening your first change. Thank you for your contribution! Next steps: Most changes in the Go project go through a few rounds of revision. This can be During May-July and Nov-Jan the Go project is in a code freeze, during which Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Rhys Hiltner: Patch Set 5: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 5: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Go LUCI: Patch Set 5: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Michael Knyszek: Patch Set 5: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Rhys Hiltner: Patch Set 5: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Michael Knyszek: Patch Set 5: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Michael Knyszek: Patch Set 5: Code-Review+2 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Michael Knyszek: Patch Set 5: Auto-Submit+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Rhys Hiltner: Patch Set 5: Auto-Submit+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Message from Rhys Hiltner: Patch Set 6: Auto-Submit+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/571056. |
Profiling of runtime-internal locks checks gp.m.locks to see if it's safe to add a new record to the profile, but direct use of acquireLockRank can change the list of the M's active lock ranks without updating gp.m.locks to match. The runtime's internal rwmutex implementation makes a point of calling acquirem/releasem when manipulating the lock rank list, but the other user of acquireLockRank (the GC's Gscan bit) relied on the GC's invariants to avoid deadlocks. Codify the rwmutex approach by renaming acquireLockRank to acquireLockRankAndM and having it include a call to aquirem. Do the same for release. Fixes #64706 Fixes #66004 Change-Id: Ib76eaa0cc1c45b64861d03345e17e1e843c19713 GitHub-Last-Rev: 160577b GitHub-Pull-Request: #66276 Reviewed-on: https://go-review.googlesource.com/c/go/+/571056 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Auto-Submit: Rhys Hiltner <rhys.hiltner@gmail.com> Reviewed-by: Michael Pratt <mpratt@google.com>
This PR is being closed because golang.org/cl/571056 has been merged. |
Profiling of runtime-internal locks checks gp.m.locks to see if it's
safe to add a new record to the profile, but direct use of
acquireLockRank can change the list of the M's active lock ranks without
updating gp.m.locks to match. The runtime's internal rwmutex
implementation makes a point of calling acquirem/releasem when
manipulating the lock rank list, but the other user of acquireLockRank
(the GC's Gscan bit) relied on the GC's invariants to avoid deadlocks.
Codify the rwmutex approach by renaming acquireLockRank to
acquireLockRankAndM and having it include a call to aquirem. Do the same
for release.
Fixes #64706
Fixes #66004