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.23.3
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.23.4
Choose a head ref
  • 8 commits
  • 18 files changed
  • 7 contributors

Commits on Nov 19, 2024

  1. [release-branch.go1.23] cmd/compile: use a non-fragile test for "does…

    … f contain closure c?"
    
    The old test relied on naming conventions.  The new test
    uses an explicit parent pointer chain initialized when the
    closures are created (in the same place that the names
    used in the older fragile test were assigned).
    
    Fixes #70198.
    
    Change-Id: Ie834103c7096e4505faaff3bed1fc6e918a21211
    Reviewed-on: https://go-review.googlesource.com/c/go/+/622656
    Reviewed-by: Keith Randall <khr@golang.org>
    Reviewed-by: Keith Randall <khr@google.com>
    Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    Reviewed-on: https://go-review.googlesource.com/c/go/+/625535
    Auto-Submit: Dmitri Shuralyov <dmitshur@google.com>
    dr2chase authored and gopherbot committed Nov 19, 2024
    Configuration menu
    Copy the full SHA
    3726f07 View commit details
    Browse the repository at this point in the history
  2. [release-branch.go1.23]time: accept "+01" in TestLoadFixed on OpenBSD

    This stops the test from failing with a known failure mode, and
    creates time to look into what the next steps should be, if any.
    
    For #69840
    Fixes #70239
    
    Change-Id: I060903d256ed65c5dfcd70ae76eb361cab63186f
    Reviewed-on: https://go-review.googlesource.com/c/go/+/625197
    Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
    Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    Reviewed-by: Ian Lance Taylor <iant@google.com>
    Reviewed-by: Eric Grosse <grosse@gmail.com>
    (cherry picked from commit bea9b91)
    Reviewed-on: https://go-review.googlesource.com/c/go/+/627575
    Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
    TryBot-Bypass: Dmitri Shuralyov <dmitshur@google.com>
    Auto-Submit: Ian Lance Taylor <iant@google.com>
    dmitshur authored and gopherbot committed Nov 19, 2024
    Configuration menu
    Copy the full SHA
    777f43a View commit details
    Browse the repository at this point in the history

Commits on Nov 20, 2024

  1. [release-branch.go1.23] syscall: mark SyscallN as noescape

    syscall.SyscallN is implemented by runtime.syscall_syscalln, which makes
    sure that the variadic argument doesn't escape.
    
    There is no need to worry about the lifetime of the elements of the
    variadic argument, as the compiler will keep them live until the
    function returns.
    
    For #70197
    Fixes #70202
    
    Change-Id: I12991f0be12062eea68f2b103fa0a794c1b527eb
    Reviewed-on: https://go-review.googlesource.com/c/go/+/625297
    Reviewed-by: Ian Lance Taylor <iant@google.com>
    Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
    Reviewed-by: David Chase <drchase@google.com>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    (cherry picked from commit 7fff741)
    Reviewed-on: https://go-review.googlesource.com/c/go/+/630196
    Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
    Auto-Submit: Ian Lance Taylor <iant@google.com>
    Reviewed-by: Quim Muntal <quimmuntal@gmail.com>
    qmuntal authored and gopherbot committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    847cb6f View commit details
    Browse the repository at this point in the history
  2. [release-branch.go1.23] runtime: prevent weak->strong conversions dur…

    …ing mark termination
    
    Currently it's possible for weak->strong conversions to create more GC
    work during mark termination. When a weak->strong conversion happens
    during the mark phase, we need to mark the newly-strong pointer, since
    it may now be the only pointer to that object. In other words, the
    object could be white.
    
    But queueing new white objects creates GC work, and if this happens
    during mark termination, we could end up violating mark termination
    invariants. In the parlance of the mark termination algorithm, the
    weak->strong conversion is a non-monotonic source of GC work, unlike the
    write barriers (which will eventually only see black objects).
    
    This change fixes the problem by forcing weak->strong conversions to
    block during mark termination. We can do this efficiently by setting a
    global flag before the ragged barrier that is checked at each
    weak->strong conversion. If the flag is set, then the conversions block.
    The ragged barrier ensures that all Ps have observed the flag and that
    any weak->strong conversions which completed before the ragged barrier
    have their newly-minted strong pointers visible in GC work queues if
    necessary. We later unset the flag and wake all the blocked goroutines
    during the mark termination STW.
    
    There are a few subtleties that we need to account for. For one, it's
    possible that a goroutine which blocked in a weak->strong conversion
    wakes up only to find it's mark termination time again, so we need to
    recheck the global flag on wake. We should also stay non-preemptible
    while performing the check, so that if the check *does* appear as true,
    it cannot switch back to false while we're actively trying to block. If
    it switches to false while we try to block, then we'll be stuck in the
    queue until the following GC.
    
    All-in-all, this CL is more complicated than I would have liked, but
    it's the only idea so far that is clearly correct to me at a high level.
    
    This change adds a test which is somewhat invasive as it manipulates
    mark termination, but hopefully that infrastructure will be useful for
    debugging, fixing, and regression testing mark termination whenever we
    do fix it.
    
    For #69803.
    Fixes #70323.
    
    Change-Id: Ie314e6fd357c9e2a07a9be21f217f75f7aba8c4a
    Reviewed-on: https://go-review.googlesource.com/c/go/+/623615
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    Reviewed-by: Cherry Mui <cherryyz@google.com>
    (cherry picked from commit 80d306d)
    Reviewed-on: https://go-review.googlesource.com/c/go/+/627615
    TryBot-Bypass: Dmitri Shuralyov <dmitshur@google.com>
    Auto-Submit: Dmitri Shuralyov <dmitshur@google.com>
    mknyszek authored and gopherbot committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    d8adc6c View commit details
    Browse the repository at this point in the history
  3. [release-branch.go1.23] runtime: explicitly keep handle alive during …

    …getOrAddWeakHandle
    
    getOrAddWeakHandle is very careful about keeping its input alive across
    the operation, but not very careful about keeping the heap-allocated
    handle it creates alive. In fact, there's a window in this function
    where it is *only* visible via the special. Specifically, the window of
    time between when the handle is stored in the special and when the
    special actually becomes visible to the GC.
    
    (If we fail to add the special because it already exists, that case is
    fine. We don't even use the same handle value, but the one we obtain
    from the attached GC-visible special, *and* we return that value, so it
    remains live.)
    
    For #70455.
    Fixes #70469.
    
    Change-Id: Iadaff0cfb93bcaf61ba2b05be7fa0519c481de82
    Reviewed-on: https://go-review.googlesource.com/c/go/+/630316
    Auto-Submit: Michael Knyszek <mknyszek@google.com>
    Reviewed-by: Cherry Mui <cherryyz@google.com>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    mknyszek authored and gopherbot committed Nov 20, 2024
    Configuration menu
    Copy the full SHA
    be062b7 View commit details
    Browse the repository at this point in the history

Commits on Nov 27, 2024

  1. [release-branch.go1.23] runtime: reserve 4kB for system stack on wind…

    …ows-386
    
    The failures in #70288 are consistent with and strongly imply
    stack corruption during fault handling, and debug prints show
    that the Go code run during fault handling is running about
    300 bytes above the bottom of the goroutine stack.
    That should be okay, but that implies the DLL code that called
    Go's handler was running near the bottom of the stack too,
    and maybe it called other deeper things before or after the
    Go handler and smashed the stack that way.
    
    stackSystem is already 4096 bytes on amd64;
    making it match that on 386 makes the flaky failures go away.
    It's a little unsatisfying not to be able to say exactly what is
    overflowing the stack, but the circumstantial evidence is
    very strong that it's Windows.
    
    For #70288.
    Fixes #70475.
    
    Change-Id: Ife89385873d5e5062a71629dbfee40825edefa49
    Reviewed-on: https://go-review.googlesource.com/c/go/+/627375
    Reviewed-by: Ian Lance Taylor <iant@google.com>
    Auto-Submit: Russ Cox <rsc@golang.org>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    (cherry picked from commit 7eeb0a1)
    Reviewed-on: https://go-review.googlesource.com/c/go/+/632196
    Reviewed-by: Cherry Mui <cherryyz@google.com>
    Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
    Auto-Submit: Veronica Silina <veronicasilina@google.com>
    rsc authored and gopherbot committed Nov 27, 2024
    Configuration menu
    Copy the full SHA
    25f042d View commit details
    Browse the repository at this point in the history
  2. [release-branch.go1.23] cmd/trace: also show end stack traces

    Fix a regression that appeared in 1.23 when it comes to the stack traces
    shown in the trace viewer. In 1.22 and earlier, the viewer was always
    showing end stack traces. In 1.23 and later the viewer started to
    exclusively show start stack traces.
    
    Showing only the start stack traces made it impossible to see the last
    stack trace produced by a goroutine. It also made it hard to understand
    why a goroutine went off-cpu, as one had to hunt down the next running
    slice of the same goroutine.
    
    Emit end stack traces in addition to start stack traces to fix the
    issue.
    
    Fixes #70592
    
    Change-Id: Ib22ea61388c1d94cdbc99fae2d207c4dce011a59
    Reviewed-on: https://go-review.googlesource.com/c/go/+/631895
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    Reviewed-by: Michael Pratt <mpratt@google.com>
    Auto-Submit: Felix Geisendörfer <felix.geisendoerfer@datadoghq.com>
    Reviewed-by: Nick Ripley <nick.ripley@datadoghq.com>
    Reviewed-by: Michael Knyszek <mknyszek@google.com>
    (cherry picked from commit 6405e60)
    Reviewed-on: https://go-review.googlesource.com/c/go/+/632075
    Reviewed-by: Veronica Silina <veronicasilina@google.com>
    Auto-Submit: Veronica Silina <veronicasilina@google.com>
    felixge authored and gopherbot committed Nov 27, 2024
    Configuration menu
    Copy the full SHA
    5164a86 View commit details
    Browse the repository at this point in the history

Commits on Dec 3, 2024

  1. [release-branch.go1.23] go1.23.4

    Change-Id: I8d26e5231e868476949390ec900f0273c816d807
    Reviewed-on: https://go-review.googlesource.com/c/go/+/633217
    Reviewed-by: Veronica Silina <veronicasilina@google.com>
    Auto-Submit: Gopher Robot <gobot@golang.org>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    Reviewed-by: Michael Knyszek <mknyszek@google.com>
    gopherbot committed Dec 3, 2024
    Configuration menu
    Copy the full SHA
    194de8f View commit details
    Browse the repository at this point in the history
Loading