[go] runtime: don't crash on a stuck traceback when errors are tolerated

12 views
Skip to first unread message

Liz Fong-Jones (Gerrit)

unread,
Aug 6, 2026, 1:29:09 PMAug 6
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Liz Fong-Jones has uploaded the change for review

Commit message

runtime: don't crash on a stuck traceback when errors are tolerated

sigprof unwinds with unwindSilentErrors so that a profiling signal can
never take down the process. (*unwinder).next honors that flag when the
caller PC is invalid, but the adjacent check for a frame that cannot make
progress throws unconditionally, so a single unsymbolizable sample kills
a healthy program.

A stuck frame does not always mean the stack is corrupt. A signal can land
in machine code the runtime has no unwind information for and never could:
a JIT, or an assembly blob entered by a jump from a frameless Go symbol,
whose C prologue leaves pc == lr and sp == fp partway through. There is no
root cause to find there and nothing further unwinding can recover, so
give up and report a truncated stack instead.

Where a stuck unwind does indicate corruption the diagnostic is still worth
having, so keep it reachable: GODEBUG=tracebackstuckcrash=1 restores the
unconditional throw.

Fixes #80771
For #62086
Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da

Change diff

diff --git a/src/runtime/crash_test.go b/src/runtime/crash_test.go
index f7891a9..4a2fdf1 100644
--- a/src/runtime/crash_test.go
+++ b/src/runtime/crash_test.go
@@ -1238,3 +1238,22 @@
})
}
}
+
+func TestProfileStuckTraceback(t *testing.T) {
+ if runtime.GOARCH != "arm64" {
+ t.Skip("test assembly is arm64-only")
+ }
+ t.Run("truncates", func(t *testing.T) {
+ output := runTestProg(t, "testprog", "ProfileStuckTraceback")
+ if !strings.Contains(output, "OK") {
+ t.Fatalf("output:\n%s\n\nwant output containing: OK", output)
+ }
+ })
+ t.Run("crashes under GODEBUG", func(t *testing.T) {
+ output := runTestProg(t, "testprog", "ProfileStuckTraceback", "GODEBUG=tracebackstuckcrash=1")
+ want := "fatal error: traceback stuck"
+ if !strings.Contains(output, want) {
+ t.Fatalf("output:\n%s\n\nwant output containing: %s", output, want)
+ }
+ })
+}
diff --git a/src/runtime/extern.go b/src/runtime/extern.go
index a69f4aa..ed03fcd 100644
--- a/src/runtime/extern.go
+++ b/src/runtime/extern.go
@@ -211,6 +211,13 @@
report. This also extends the information returned by runtime.Stack.
Setting N to 0 will report no ancestry information.

+ tracebackstuckcrash: setting tracebackstuckcrash=1 restores the pre-Go 1.27
+ behavior of throwing a fatal "traceback stuck" error when the unwinder cannot
+ make progress, even for unwinds that tolerate errors such as CPU profiling.
+ By default such unwinds now stop early and report a truncated stack. Enable
+ this to diagnose a stuck unwind that is suspected to indicate stack corruption
+ rather than machine code the runtime has no unwind information for.
+
tracefpunwindoff: setting tracefpunwindoff=1 forces the execution tracer
and block and mutex profilers to use the runtime's default stack
unwinder instead of frame pointer unwinding. This increases their
diff --git a/src/runtime/runtime1.go b/src/runtime/runtime1.go
index fc26e9b..261131a 100644
--- a/src/runtime/runtime1.go
+++ b/src/runtime/runtime1.go
@@ -320,6 +320,7 @@
scheddetail int32
schedtrace int32
tracebackancestors int32
+ tracebackstuckcrash int32
updatemaxprocs int32
asyncpreemptoff int32
harddecommit int32
@@ -386,6 +387,7 @@
{name: "tracecheckstackownership", value: &debug.traceCheckStackOwnership},
{name: "tracebackancestors", value: &debug.tracebackancestors},
{name: "tracebacklabels", atomic: &debug.tracebacklabels, def: 1},
+ {name: "tracebackstuckcrash", value: &debug.tracebackstuckcrash},
{name: "tracefpunwindoff", value: &debug.tracefpunwindoff},
{name: "updatemaxprocs", value: &debug.updatemaxprocs, def: 1},
}
diff --git a/src/runtime/testdata/testprog/tracebackstuck_arm64.go b/src/runtime/testdata/testprog/tracebackstuck_arm64.go
new file mode 100644
index 0000000..d140a48
--- /dev/null
+++ b/src/runtime/testdata/testprog/tracebackstuck_arm64.go
@@ -0,0 +1,39 @@
+// Copyright 2026 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "io"
+ "runtime"
+ "runtime/pprof"
+ "sync"
+)
+
+func init() {
+ register("ProfileStuckTraceback", ProfileStuckTraceback)
+}
+
+func spinStuck(n int64)
+
+func ProfileStuckTraceback() {
+ if err := pprof.StartCPUProfile(io.Discard); err != nil {
+ panic(err)
+ }
+ defer pprof.StopCPUProfile()
+
+ var wg sync.WaitGroup
+ for range runtime.GOMAXPROCS(0) {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ for range 100 {
+ spinStuck(50_000_000)
+ }
+ }()
+ }
+ wg.Wait()
+ fmt.Println("OK")
+}
diff --git a/src/runtime/testdata/testprog/tracebackstuck_arm64.s b/src/runtime/testdata/testprog/tracebackstuck_arm64.s
new file mode 100644
index 0000000..05490d9
--- /dev/null
+++ b/src/runtime/testdata/testprog/tracebackstuck_arm64.s
@@ -0,0 +1,21 @@
+// Copyright 2026 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "textflag.h"
+
+// func spinStuck(n int64)
+//
+// A frameless leaf that points LR at its own loop body. A signal landing in the
+// loop therefore observes pc == lr and sp == fp, the same shape the unwinder
+// sees when a signal lands in machine code it has no unwind information for,
+// such as a JIT or an assembly blob entered by a jump from a frameless symbol.
+TEXT ·spinStuck(SB), NOSPLIT|NOFRAME, $0-8
+ MOVD n+0(FP), R1
+ MOVD R30, R19
+ WORD $0x1000003e // adr x30, .+4
+loop:
+ SUB $1, R1, R1
+ CBNZ R1, loop
+ MOVD R19, R30
+ RET
diff --git a/src/runtime/traceback.go b/src/runtime/traceback.go
index 58161de..3702b49 100644
--- a/src/runtime/traceback.go
+++ b/src/runtime/traceback.go
@@ -481,9 +481,28 @@

if frame.pc == frame.lr && frame.sp == frame.fp {
// If the next frame is identical to the current frame, we cannot make progress.
- print("runtime: traceback stuck. pc=", hex(frame.pc), " sp=", hex(frame.sp), "\n")
- tracebackHexdump(gp.stack, frame, frame.sp)
- throw("traceback stuck")
+ // Like the invalid-caller-PC case above, this happens if you get a profiling
+ // interrupt at just the wrong time, so it is okay to stop early. But if no
+ // error flags are set, we're doing a garbage collection and must get
+ // everything, so crash loudly.
+ //
+ // A stuck frame does not always mean the stack is corrupt: a signal can land
+ // in machine code the runtime has no unwind information for, such as a JIT
+ // or an assembly blob entered by a jump from a frameless Go symbol, whose
+ // prologue leaves pc == lr and sp == fp. No amount of unwinding can recover
+ // from that, so killing the process serves no purpose. GODEBUG=
+ // tracebackstuckcrash=1 restores the unconditional throw for debugging.
+ fail := u.flags&(unwindPrintErrors|unwindSilentErrors) == 0 || debug.tracebackstuckcrash != 0
+ if fail || u.flags&unwindSilentErrors == 0 {
+ print("runtime: traceback stuck. pc=", hex(frame.pc), " sp=", hex(frame.sp), "\n")
+ tracebackHexdump(gp.stack, frame, frame.sp)
+ }
+ if fail {
+ throw("traceback stuck")
+ }
+ frame.lr = 0
+ u.finishInternal()
+ return
}

injectedCall := isInjectedCall(f.funcID)

Change information

Files:
  • M src/runtime/crash_test.go
  • M src/runtime/extern.go
  • M src/runtime/runtime1.go
  • A src/runtime/testdata/testprog/tracebackstuck_arm64.go
  • A src/runtime/testdata/testprog/tracebackstuck_arm64.s
  • M src/runtime/traceback.go
Change size: M
Delta: 6 files changed, 110 insertions(+), 3 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
Gerrit-Change-Number: 811580
Gerrit-PatchSet: 1
Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
unsatisfied_requirement
satisfied_requirement
open
diffy

Cherry Mui (Gerrit)

unread,
Aug 14, 2026, 3:50:38 PMAug 14
to Liz Fong-Jones, goph...@pubsubhelper.golang.org, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
Attention needed from Austin Clements, Dmitry Vyukov, Liz Fong-Jones and Martin Möhrmann

Cherry Mui added 3 comments

Patchset-level comments
File-level comment, Patchset 1 (Latest):
Cherry Mui . resolved

Thanks for the CL. The change to the unwinder looks good.

Commit Message
Line 15, Patchset 1 (Latest):A stuck frame does not always mean the stack is corrupt. A signal can land
Cherry Mui . unresolved

While it may not always corrupt, it is an ABI violation, so still a bug. The user assembly code should not do that. We probably don't want to add a test for this specific bad behavior.

Line 22, Patchset 1 (Latest):Where a stuck unwind does indicate corruption the diagnostic is still worth

having, so keep it reachable: GODEBUG=tracebackstuckcrash=1 restores the
unconditional throw.
Cherry Mui . unresolved

While it may be valuable to keep the diagnostic scheme, a GODEBUG specifically for this may be overkill. Perhaps just remove. Or maybe it is more valuable to have a more general purpose GODEBUG, that controls whether to crash on unwinding errors in sigprof? (Maybe a separate CL, then.)

Open in Gerrit

Related details

Attention is currently required from:
  • Austin Clements
  • Dmitry Vyukov
  • Liz Fong-Jones
  • Martin Möhrmann
Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
    Gerrit-Change-Number: 811580
    Gerrit-PatchSet: 1
    Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
    Gerrit-Reviewer: Austin Clements <aus...@google.com>
    Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
    Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
    Gerrit-CC: Cherry Mui <cher...@google.com>
    Gerrit-CC: Gopher Robot <go...@golang.org>
    Gerrit-Attention: Liz Fong-Jones <li...@honeycomb.io>
    Gerrit-Attention: Martin Möhrmann <moeh...@google.com>
    Gerrit-Attention: Dmitry Vyukov <dvy...@google.com>
    Gerrit-Attention: Austin Clements <aus...@google.com>
    Gerrit-Comment-Date: Fri, 14 Aug 2026 19:50:34 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Liz Fong-Jones (Gerrit)

    unread,
    Aug 15, 2026, 2:06:50 AMAug 15
    to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
    Attention needed from Austin Clements, Dmitry Vyukov, Liz Fong-Jones and Martin Möhrmann

    Liz Fong-Jones uploaded new patchset

    Liz Fong-Jones uploaded patch set #2 to this change.
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Austin Clements
    • Dmitry Vyukov
    • Liz Fong-Jones
    • Martin Möhrmann
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: newpatchset
    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
    Gerrit-Change-Number: 811580
    Gerrit-PatchSet: 2
    unsatisfied_requirement
    open
    diffy

    Liz Fong-Jones (Gerrit)

    unread,
    Aug 15, 2026, 2:09:30 AMAug 15
    to goph...@pubsubhelper.golang.org, Cherry Mui, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
    Attention needed from Austin Clements, Cherry Mui, Dmitry Vyukov and Martin Möhrmann

    Liz Fong-Jones added 3 comments

    Patchset-level comments
    File-level comment, Patchset 2 (Latest):
    Liz Fong-Jones . resolved

    Done, removed the test, and switched to a global flag for noisily crashing on traceback failure.

    Commit Message
    Line 15, Patchset 1:A stuck frame does not always mean the stack is corrupt. A signal can land
    Cherry Mui . resolved

    While it may not always corrupt, it is an ABI violation, so still a bug. The user assembly code should not do that. We probably don't want to add a test for this specific bad behavior.

    Liz Fong-Jones

    Acknowledged

    Line 22, Patchset 1:Where a stuck unwind does indicate corruption the diagnostic is still worth

    having, so keep it reachable: GODEBUG=tracebackstuckcrash=1 restores the
    unconditional throw.
    Cherry Mui . resolved

    While it may be valuable to keep the diagnostic scheme, a GODEBUG specifically for this may be overkill. Perhaps just remove. Or maybe it is more valuable to have a more general purpose GODEBUG, that controls whether to crash on unwinding errors in sigprof? (Maybe a separate CL, then.)

    Liz Fong-Jones

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Austin Clements
    • Cherry Mui
    • Dmitry Vyukov
    • Martin Möhrmann
    Submit Requirements:
      • requirement is not satisfiedCode-Review
      • requirement satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement is not satisfiedTryBots-Pass
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: go
      Gerrit-Branch: master
      Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
      Gerrit-Change-Number: 811580
      Gerrit-PatchSet: 2
      Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
      Gerrit-Reviewer: Austin Clements <aus...@google.com>
      Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
      Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
      Gerrit-CC: Cherry Mui <cher...@google.com>
      Gerrit-CC: Gopher Robot <go...@golang.org>
      Gerrit-Attention: Cherry Mui <cher...@google.com>
      Gerrit-Attention: Martin Möhrmann <moeh...@google.com>
      Gerrit-Attention: Dmitry Vyukov <dvy...@google.com>
      Gerrit-Attention: Austin Clements <aus...@google.com>
      Gerrit-Comment-Date: Sat, 15 Aug 2026 06:09:18 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Cherry Mui <cher...@google.com>
      unsatisfied_requirement
      satisfied_requirement
      open
      diffy

      Cherry Mui (Gerrit)

      unread,
      Aug 17, 2026, 11:24:36 AMAug 17
      to Liz Fong-Jones, goph...@pubsubhelper.golang.org, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
      Attention needed from Austin Clements, Dmitry Vyukov, Liz Fong-Jones and Martin Möhrmann

      Cherry Mui voted and added 2 comments

      Votes added by Cherry Mui

      Code-Review+2
      Commit-Queue+1

      2 comments

      Patchset-level comments
      Cherry Mui . resolved

      Thanks.

      File src/runtime/traceback.go
      Line 490, Patchset 2 (Latest): // runtime has no unwind information for, such as a JIT or an assembly blob
      // entered by a jump from a frameless Go symbol, whose prologue leaves
      // pc == lr and sp == fp. No amount of unwinding can recover from that.
      Cherry Mui . unresolved

      Minor: maybe mention that this is still technically a bug.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Austin Clements
      • Dmitry Vyukov
      • Liz Fong-Jones
      • Martin Möhrmann
      Submit Requirements:
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement is not satisfiedTryBots-Pass
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: go
      Gerrit-Branch: master
      Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
      Gerrit-Change-Number: 811580
      Gerrit-PatchSet: 2
      Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
      Gerrit-Reviewer: Austin Clements <aus...@google.com>
      Gerrit-Reviewer: Cherry Mui <cher...@google.com>
      Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
      Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
      Gerrit-CC: Gopher Robot <go...@golang.org>
      Gerrit-Attention: Liz Fong-Jones <li...@honeycomb.io>
      Gerrit-Attention: Martin Möhrmann <moeh...@google.com>
      Gerrit-Attention: Dmitry Vyukov <dvy...@google.com>
      Gerrit-Attention: Austin Clements <aus...@google.com>
      Gerrit-Comment-Date: Mon, 17 Aug 2026 15:24:29 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Liz Fong-Jones (Gerrit)

      unread,
      Aug 17, 2026, 9:07:06 PMAug 17
      to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
      Attention needed from Austin Clements, Cherry Mui, Dmitry Vyukov, Liz Fong-Jones and Martin Möhrmann

      Liz Fong-Jones uploaded new patchset

      Liz Fong-Jones uploaded patch set #3 to this change.
      Following approvals got outdated and were removed:
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Austin Clements
      • Cherry Mui
      • Dmitry Vyukov
      • Liz Fong-Jones
      • Martin Möhrmann
        Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement is not satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: newpatchset
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
        Gerrit-Change-Number: 811580
        Gerrit-PatchSet: 3
        Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
        Gerrit-Reviewer: Austin Clements <aus...@google.com>
        Gerrit-Reviewer: Cherry Mui <cher...@google.com>
        Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
        Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
        unsatisfied_requirement
        open
        diffy

        Liz Fong-Jones (Gerrit)

        unread,
        Aug 17, 2026, 9:09:49 PMAug 17
        to goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Cherry Mui, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
        Attention needed from Austin Clements, Cherry Mui, Dmitry Vyukov and Martin Möhrmann

        Liz Fong-Jones added 2 comments

        Patchset-level comments
        File-level comment, Patchset 3 (Latest):
        Liz Fong-Jones . resolved

        Added the prose about it being an ABI violation per your request.

        File src/runtime/traceback.go
        Line 490, Patchset 2: // runtime has no unwind information for, such as a JIT or an assembly blob

        // entered by a jump from a frameless Go symbol, whose prologue leaves
        // pc == lr and sp == fp. No amount of unwinding can recover from that.
        Cherry Mui . resolved

        Minor: maybe mention that this is still technically a bug.

        Liz Fong-Jones

        Done

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Austin Clements
        • Cherry Mui
        • Dmitry Vyukov
        • Martin Möhrmann
        Submit Requirements:
          • requirement is not satisfiedCode-Review
          • requirement satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          • requirement is not satisfiedTryBots-Pass
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: go
          Gerrit-Branch: master
          Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
          Gerrit-Change-Number: 811580
          Gerrit-PatchSet: 3
          Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
          Gerrit-Reviewer: Austin Clements <aus...@google.com>
          Gerrit-Reviewer: Cherry Mui <cher...@google.com>
          Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
          Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
          Gerrit-CC: Gopher Robot <go...@golang.org>
          Gerrit-Attention: Cherry Mui <cher...@google.com>
          Gerrit-Attention: Martin Möhrmann <moeh...@google.com>
          Gerrit-Attention: Dmitry Vyukov <dvy...@google.com>
          Gerrit-Attention: Austin Clements <aus...@google.com>
          Gerrit-Comment-Date: Tue, 18 Aug 2026 01:09:39 +0000
          unsatisfied_requirement
          satisfied_requirement
          open
          diffy

          Cherry Mui (Gerrit)

          unread,
          Aug 18, 2026, 10:37:48 AMAug 18
          to Liz Fong-Jones, goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
          Attention needed from Austin Clements, Dmitry Vyukov, Liz Fong-Jones and Martin Möhrmann

          Cherry Mui voted and added 1 comment

          Votes added by Cherry Mui

          Code-Review+2

          1 comment

          Patchset-level comments
          Cherry Mui . resolved

          LGTM, thanks!

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Austin Clements
          • Dmitry Vyukov
          • Liz Fong-Jones
          • Martin Möhrmann
          Submit Requirements:
          • requirement satisfiedCode-Review
          • requirement satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          • requirement is not satisfiedTryBots-Pass
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: go
          Gerrit-Branch: master
          Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
          Gerrit-Change-Number: 811580
          Gerrit-PatchSet: 3
          Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
          Gerrit-Reviewer: Austin Clements <aus...@google.com>
          Gerrit-Reviewer: Cherry Mui <cher...@google.com>
          Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
          Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
          Gerrit-CC: Gopher Robot <go...@golang.org>
          Gerrit-Attention: Liz Fong-Jones <li...@honeycomb.io>
          Gerrit-Attention: Martin Möhrmann <moeh...@google.com>
          Gerrit-Attention: Dmitry Vyukov <dvy...@google.com>
          Gerrit-Attention: Austin Clements <aus...@google.com>
          Gerrit-Comment-Date: Tue, 18 Aug 2026 14:37:40 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Cherry Mui (Gerrit)

          unread,
          Aug 18, 2026, 10:37:52 AMAug 18
          to Liz Fong-Jones, goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
          Attention needed from Austin Clements, Dmitry Vyukov, Liz Fong-Jones and Martin Möhrmann

          Cherry Mui voted Commit-Queue+1

          Commit-Queue+1
          Gerrit-Comment-Date: Tue, 18 Aug 2026 14:37:47 +0000
          Gerrit-HasComments: No
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          David Chase (Gerrit)

          unread,
          Aug 19, 2026, 11:16:18 AMAug 19
          to Liz Fong-Jones, goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Cherry Mui, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
          Attention needed from Austin Clements, Dmitry Vyukov, Liz Fong-Jones and Martin Möhrmann

          David Chase voted Code-Review+2

          Code-Review+2
          Open in Gerrit

          Related details

          Attention is currently required from:
          • Austin Clements
          • Dmitry Vyukov
          • Liz Fong-Jones
          • Martin Möhrmann
          Submit Requirements:
            • requirement satisfiedCode-Review
            • requirement satisfiedNo-Unresolved-Comments
            • requirement satisfiedReview-Enforcement
            • requirement satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
            Gerrit-Change-Number: 811580
            Gerrit-PatchSet: 3
            Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
            Gerrit-Reviewer: Austin Clements <aus...@google.com>
            Gerrit-Reviewer: Cherry Mui <cher...@google.com>
            Gerrit-Reviewer: David Chase <drc...@google.com>
            Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
            Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
            Gerrit-CC: Gopher Robot <go...@golang.org>
            Gerrit-Attention: Liz Fong-Jones <li...@honeycomb.io>
            Gerrit-Attention: Martin Möhrmann <moeh...@google.com>
            Gerrit-Attention: Dmitry Vyukov <dvy...@google.com>
            Gerrit-Attention: Austin Clements <aus...@google.com>
            Gerrit-Comment-Date: Wed, 19 Aug 2026 15:16:13 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: Yes
            satisfied_requirement
            open
            diffy

            Cherry Mui (Gerrit)

            unread,
            Aug 19, 2026, 11:35:30 AMAug 19
            to Liz Fong-Jones, goph...@pubsubhelper.golang.org, golang-...@googlegroups.com, David Chase, golang...@luci-project-accounts.iam.gserviceaccount.com, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com

            Cherry Mui submitted the change

            Change information

            Commit message:
            runtime: don't crash on a stuck traceback when errors are tolerated

            sigprof unwinds with unwindSilentErrors so that a profiling signal can
            never take down the process. (*unwinder).next already honored that flag
            when the caller PC was invalid, but the adjacent check for a frame that
            cannot make progress threw unconditionally, so a single unsymbolizable
            sample killed a healthy program.


            A stuck frame does not always mean the stack is corrupt. A signal can
            land in machine code the runtime has no unwind information for and
            never could: a JIT, or an assembly blob entered by a jump from a
            frameless Go symbol, whose C prologue leaves pc == lr and sp == fp

            partway through. There is no root cause to find there and nothing
            further unwinding can recover, so give up and report a truncated stack
            instead, the same as the existing invalid-caller-PC case.

            GODEBUG=tracebackcrash=1 restores the pre-Go 1.28 behavior of throwing
            on any unwinding error that these unwinds would otherwise tolerate, for
            diagnosing a stuck or unresolvable unwind suspected to indicate real
            stack corruption.

            Fixes #80771
            For #62086
            Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
            Reviewed-by: Cherry Mui <cher...@google.com>
            Reviewed-by: David Chase <drc...@google.com>
            Files:
            • M src/runtime/extern.go
            • M src/runtime/runtime1.go
            • M src/runtime/traceback.go
            Change size: S
            Delta: 3 files changed, 33 insertions(+), 8 deletions(-)
            Branch: refs/heads/master
            Submit Requirements:
            Open in Gerrit
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: merged
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
            Gerrit-Change-Number: 811580
            Gerrit-PatchSet: 4
            open
            diffy
            satisfied_requirement

            Michael Pratt (Gerrit)

            unread,
            Aug 19, 2026, 11:47:58 AMAug 19
            to Cherry Mui, Liz Fong-Jones, goph...@pubsubhelper.golang.org, Michael Pratt, David Chase, golang...@luci-project-accounts.iam.gserviceaccount.com, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
            Attention needed from Liz Fong-Jones

            Michael Pratt added 1 comment

            File src/runtime/extern.go
            Line 214, Patchset 4 (Latest): tracebackcrash: setting tracebackcrash=1 restores the pre-Go 1.28 behavior of
            Michael Pratt . unresolved

            This is slightly inaccurate as the `!flr.valid()` case (L465 in traceback.go) will crash in cases where 1.27 would not. I don't think this needs to say it restores old behavior, just that it crashes.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Liz Fong-Jones
            Submit Requirements:
            • requirement satisfiedCode-Review
            • requirement satisfiedNo-Unresolved-Comments
            • requirement satisfiedReview-Enforcement
            • requirement satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
            Gerrit-Change-Number: 811580
            Gerrit-PatchSet: 4
            Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
            Gerrit-Reviewer: Austin Clements <aus...@google.com>
            Gerrit-Reviewer: Cherry Mui <cher...@google.com>
            Gerrit-Reviewer: David Chase <drc...@google.com>
            Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
            Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
            Gerrit-CC: Gopher Robot <go...@golang.org>
            Gerrit-CC: Michael Pratt <mpr...@google.com>
            Gerrit-Attention: Liz Fong-Jones <li...@honeycomb.io>
            Gerrit-Comment-Date: Wed, 19 Aug 2026 15:47:53 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            satisfied_requirement
            open
            diffy

            Liz Fong-Jones (Gerrit)

            unread,
            Sep 28, 2026, 11:51:29 AMSep 28
            to Cherry Mui, goph...@pubsubhelper.golang.org, Michael Pratt, David Chase, golang...@luci-project-accounts.iam.gserviceaccount.com, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com

            Liz Fong-Jones added 1 comment

            File src/runtime/extern.go
            Line 214, Patchset 4 (Latest): tracebackcrash: setting tracebackcrash=1 restores the pre-Go 1.28 behavior of
            Michael Pratt . unresolved

            This is slightly inaccurate as the `!flr.valid()` case (L465 in traceback.go) will crash in cases where 1.27 would not. I don't think this needs to say it restores old behavior, just that it crashes.

            Liz Fong-Jones

            Ah, unfortunate this feedback landed right after merge. Do you want a follow-up or is this ok to leave

            Open in Gerrit

            Related details

            Attention set is empty
            Submit Requirements:
            • requirement satisfiedCode-Review
            • requirement satisfiedNo-Unresolved-Comments
            • requirement satisfiedReview-Enforcement
            • requirement satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
            Gerrit-Change-Number: 811580
            Gerrit-PatchSet: 4
            Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
            Gerrit-Reviewer: Austin Clements <aus...@google.com>
            Gerrit-Reviewer: Cherry Mui <cher...@google.com>
            Gerrit-Reviewer: David Chase <drc...@google.com>
            Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
            Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
            Gerrit-CC: Gopher Robot <go...@golang.org>
            Gerrit-CC: Michael Pratt <mpr...@google.com>
            Gerrit-Comment-Date: Mon, 28 Sep 2026 15:51:21 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Michael Pratt <mpr...@google.com>
            satisfied_requirement
            open
            diffy

            Michael Pratt (Gerrit)

            unread,
            Sep 28, 2026, 5:34:53 PMSep 28
            to Cherry Mui, Liz Fong-Jones, goph...@pubsubhelper.golang.org, Michael Pratt, David Chase, golang...@luci-project-accounts.iam.gserviceaccount.com, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com
            Attention needed from Liz Fong-Jones

            Michael Pratt added 1 comment

            File src/runtime/extern.go
            Line 214, Patchset 4 (Latest): tracebackcrash: setting tracebackcrash=1 restores the pre-Go 1.28 behavior of
            Michael Pratt . unresolved

            This is slightly inaccurate as the `!flr.valid()` case (L465 in traceback.go) will crash in cases where 1.27 would not. I don't think this needs to say it restores old behavior, just that it crashes.

            Liz Fong-Jones

            Ah, unfortunate this feedback landed right after merge. Do you want a follow-up or is this ok to leave

            Michael Pratt

            A follow-up cleanup would be appreciated, thanks!

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Liz Fong-Jones
            Submit Requirements:
            • requirement satisfiedCode-Review
            • requirement satisfiedNo-Unresolved-Comments
            • requirement satisfiedReview-Enforcement
            • requirement satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
            Gerrit-Change-Number: 811580
            Gerrit-PatchSet: 4
            Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
            Gerrit-Reviewer: Austin Clements <aus...@google.com>
            Gerrit-Reviewer: Cherry Mui <cher...@google.com>
            Gerrit-Reviewer: David Chase <drc...@google.com>
            Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
            Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
            Gerrit-CC: Gopher Robot <go...@golang.org>
            Gerrit-CC: Michael Pratt <mpr...@google.com>
            Gerrit-Attention: Liz Fong-Jones <li...@honeycomb.io>
            Gerrit-Comment-Date: Mon, 28 Sep 2026 21:34:45 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Liz Fong-Jones <li...@honeycomb.io>
            Comment-In-Reply-To: Michael Pratt <mpr...@google.com>
            satisfied_requirement
            open
            diffy

            Liz Fong-Jones (Gerrit)

            unread,
            Sep 28, 2026, 6:30:54 PMSep 28
            to Cherry Mui, goph...@pubsubhelper.golang.org, Michael Pratt, David Chase, golang...@luci-project-accounts.iam.gserviceaccount.com, Austin Clements, Dmitry Vyukov, Martin Möhrmann, Gopher Robot, golang-co...@googlegroups.com

            Liz Fong-Jones added 1 comment

            File src/runtime/extern.go
            Line 214, Patchset 4 (Latest): tracebackcrash: setting tracebackcrash=1 restores the pre-Go 1.28 behavior of
            Michael Pratt . resolved

            This is slightly inaccurate as the `!flr.valid()` case (L465 in traceback.go) will crash in cases where 1.27 would not. I don't think this needs to say it restores old behavior, just that it crashes.

            Liz Fong-Jones

            Ah, unfortunate this feedback landed right after merge. Do you want a follow-up or is this ok to leave

            Michael Pratt

            A follow-up cleanup would be appreciated, thanks!

            Liz Fong-Jones
            Open in Gerrit

            Related details

            Attention set is empty
            Submit Requirements:
            • requirement satisfiedCode-Review
            • requirement satisfiedNo-Unresolved-Comments
            • requirement satisfiedReview-Enforcement
            • requirement satisfiedTryBots-Pass
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: go
            Gerrit-Branch: master
            Gerrit-Change-Id: Ibbf9b30158b32b6dac0457f2e19d45c2a59fd0da
            Gerrit-Change-Number: 811580
            Gerrit-PatchSet: 4
            Gerrit-Owner: Liz Fong-Jones <li...@honeycomb.io>
            Gerrit-Reviewer: Austin Clements <aus...@google.com>
            Gerrit-Reviewer: Cherry Mui <cher...@google.com>
            Gerrit-Reviewer: David Chase <drc...@google.com>
            Gerrit-Reviewer: Dmitry Vyukov <dvy...@google.com>
            Gerrit-Reviewer: Martin Möhrmann <moeh...@google.com>
            Gerrit-CC: Gopher Robot <go...@golang.org>
            Gerrit-CC: Michael Pratt <mpr...@google.com>
            Gerrit-Comment-Date: Mon, 28 Sep 2026 22:30:46 +0000
            satisfied_requirement
            open
            diffy
            Reply all
            Reply to author
            Forward
            0 new messages