Skip to content

syscall: fix deadlock in releaseForkLock#77840

Open
feizaizheli wants to merge 3 commits intogolang:masterfrom
feizaizheli:fix_first
Open

syscall: fix deadlock in releaseForkLock#77840
feizaizheli wants to merge 3 commits intogolang:masterfrom
feizaizheli:fix_first

Conversation

@feizaizheli
Copy link

This PR will be imported into Gerrit with the title and first
comment (this text) used to generate the subject and body of
the Gerrit change.

Please ensure you adhere to every item in this list.

More info can be found at https://github.com/golang/go/wiki/CommitMessage

  • The PR title is formatted as follows: net/http: frob the quux before blarfing
    • The package name goes before the colon
    • The part after the colon uses the verb tense + phrase that completes the blank in,
      "This change modifies Go to ___________"
    • Lowercase verb after the colon
    • No trailing period
    • Keep the title as short as possible. ideally under 76 characters or shorter
  • No Markdown
  • The first PR comment (this one) is wrapped at 76 characters, unless it's
    really needed (ASCII art, table, or long link)
  • If there is a corresponding issue, add either Fixes #1234 or Updates #1234
    (the latter if this is not a complete fix) to this comment
  • If referring to a repo other than golang/go you can use the
    owner/repo#issue_number syntax: Fixes golang/tools#1234
  • We do not use Signed-off-by lines in Go. Please don't add them.
    Our Gerrit server & GitHub bots enforce CLA compliance instead.
  • Delete these instructions once you have read and applied them

coffeeli added 3 commits February 27, 2026 18:27
When releaseForkLock detects forking <= 0, it would panic while still
holding forkingLock. This could cause a deadlock since the deferred
Unlock() wouldn't execute properly during panic unwinding.

Fix by explicitly unlocking forkingLock before panicking, and removing
the defer statement in favor of explicit unlock at the end of the function.

This ensures the lock is always released, even in the panic case.
@google-cla
Copy link

google-cla bot commented Feb 27, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant