Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: golang/go
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: go1.20.13
Choose a base ref
...
head repository: golang/go
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: go1.20.14
Choose a head ref
  • 4 commits
  • 27 files changed
  • 4 contributors

Commits on Jan 25, 2024

  1. [release-branch.go1.20] runtime: properly model rwmutex in lock ranking

    (This cherry-pick combines CL 549536 and the follow-up fix CL 555055.)
    
    Currently, lock ranking doesn't really try to model rwmutex. It records
    the internal locks rLock and wLock, but in a subpar fashion:
    
    1. wLock is held from lock to unlock, so it works OK, but it conflates
       write locks of all rwmutexes as rwmutexW, rather than allowing
       different rwmutexes to have different rankings.
    2. rLock is an internal implementation detail that is only taken when
       there is contention in rlock. As as result, the reader lock path is
       almost never checked.
    
    Add proper modeling. rwmutexR and rwmutexW remain as the ranks of the
    internal locks, which have their own ordering. The new init method is
    passed the ranks of the higher level lock that this represents, just
    like lockInit for mutex.
    
    execW ordered before MALLOC captures the case from #64722. i.e., there
    can be allocation between BeforeFork and AfterFork.
    
    For #64722.
    Fixes #64760.
    
    ------
    
    runtime: replace rwmutexR/W with per-rwmutex lock rank
    
    CL 549536 intended to decouple the internal implementation of rwmutex
    from the semantic meaning of an rwmutex read/write lock in the static
    lock ranking.
    
    Unfortunately, it was not thought through well enough. The internals
    were represented with the rwmutexR and rwmutexW lock ranks. The idea was
    that the internal lock ranks need not model the higher-level ordering,
    since those have separate rankings. That is incorrect; rwmutexW is held
    for the duration of a write lock, so it must be ranked before any lock
    taken while any write lock is held, which is precisely what we were
    trying to avoid.
    
    This is visible in violations like:
    
            0 : execW 11 0x0
            1 : rwmutexW 51 0x111d9c8
            2 : fin 30 0x111d3a0
            fatal error: lock ordering problem
    
    execW < fin is modeled, but rwmutexW < fin is missing.
    
    Fix this by eliminating the rwmutexR/W lock ranks shared across
    different types of rwmutex. Instead require users to define an
    additional "internal" lock rank to represent the implementation details
    of rwmutex.rLock. We can avoid an additional "internal" lock rank for
    rwmutex.wLock because the existing writeRank has the same semantics for
    semantic and internal locking. i.e., writeRank is held for the duration
    of a write lock, which is exactly how rwmutex.wLock is used, so we can
    use writeRank directly on wLock.
    
    For #64722.
    
    Cq-Include-Trybots: luci.golang.try:go1.20-linux-amd64-staticlockranking
    Change-Id: I23335b28faa42fb04f1bc9da02fdf54d1616cd28
    Reviewed-on: https://go-review.googlesource.com/c/go/+/549536
    Reviewed-by: Michael Knyszek <mknyszek@google.com>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    (cherry picked from commit 9b4b3e5)
    (cherry picked from commit dcbe772)
    Reviewed-on: https://go-review.googlesource.com/c/go/+/554995
    prattmic authored and cherrymui committed Jan 25, 2024

    Verified

    This commit was signed with the committer’s verified signature.
    renovate-bot Mend Renovate
    Copy the full SHA
    d7df7f4 View commit details

Commits on Jan 31, 2024

  1. [release-branch.go1.20] crypto/x509: properly gate test on macos version

    Fixes the gating of TestIssue51759 by shelling out to sw_vers to check
    what version of macOS we are on.
    
    For #64677
    Fixes #65379
    
    Change-Id: I5eef4fa39e5449e7b2aa73864625c3abf002aef8
    Reviewed-on: https://go-review.googlesource.com/c/go/+/549195
    Reviewed-by: Bryan Mills <bcmills@google.com>
    Auto-Submit: Roland Shoemaker <roland@golang.org>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    (cherry picked from commit 400e24a)
    Reviewed-on: https://go-review.googlesource.com/c/go/+/559516
    Auto-Submit: Michael Pratt <mpratt@google.com>
    Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
    rolandshoemaker authored and gopherbot committed Jan 31, 2024
    Copy the full SHA
    746a072 View commit details

Commits on Feb 1, 2024

  1. [release-branch.go1.20] Revert "crypto/internal/boring: upgrade modul…

    …e to fips-20220613" +1
    
    This reverts CL 553875 ("crypto/internal/boring: upgrade module to
    fips-20220613") and CL 553876 ("crypto/tls: align FIPS-only mode with
    BoringSSL policy").
    
    Fixes #65322
    Updates #65321
    Updates #64717
    Updates #62372
    
    Change-Id: I0938b97e5b4904e6532448b8ae76e920d03d0508
    Reviewed-on: https://go-review.googlesource.com/c/go/+/558796
    Reviewed-by: Michael Knyszek <mknyszek@google.com>
    Reviewed-by: Roland Shoemaker <roland@golang.org>
    Auto-Submit: Filippo Valsorda <filippo@golang.org>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    (cherry picked from commit 09b5de4)
    Reviewed-on: https://go-review.googlesource.com/c/go/+/560276
    FiloSottile authored and mknyszek committed Feb 1, 2024
    Copy the full SHA
    a2f4a5a View commit details

Commits on Feb 6, 2024

  1. [release-branch.go1.20] go1.20.14

    Change-Id: Iaa2b96cca1f7cbeb6648cf8d189e808c275d1f7f
    Reviewed-on: https://go-review.googlesource.com/c/go/+/562116
    Auto-Submit: Gopher Robot <gobot@golang.org>
    Reviewed-by: David Chase <drchase@google.com>
    Reviewed-by: Michael Knyszek <mknyszek@google.com>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    gopherbot committed Feb 6, 2024
    Copy the full SHA
    90a870f View commit details
Loading