]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.25] runtime: make all synctest bubble violations fatal panics
authorDamien Neil <dneil@google.com>
Thu, 14 Aug 2025 17:27:54 +0000 (10:27 -0700)
committerCherry Mui <cherryyz@google.com>
Mon, 25 Aug 2025 18:17:11 +0000 (11:17 -0700)
commit749dff880af3e7ac0b41fbc6a41cfb6fff6e80b9
tree5fa088982007e4017bdd95d1950d757555af14ef
parent21ac81c1e11338fbb8ef0fb52e73def26860028f
[release-branch.go1.25] runtime: make all synctest bubble violations fatal panics

Unblocking a bubbled goroutine from outside the bubble is an error
and panics. Currently, some of those panics are regular panics
and some are fatal. We use fatal panics in cases where its difficult
to panic without leaving something in an inconsistent state.

Change the regular panics (channel and timer operations) to be fatal.

This makes our behavior more consistent: All bubble violations are
always fatal.

More importantly, it avoids introducing new, recoverable panics.
A motivating example for this change is the context package,
which performs channel operations with a mutex held in the
expectation that those operations can never panic. These operations
can now panic as a result of a bubble violation, potentially
leaving a context.Context in an inconsistent state.

For #74837
Fixes #75021

Change-Id: Ie6efd916b7f505c0f13dde42de1572992401f15c
Reviewed-on: https://go-review.googlesource.com/c/go/+/696195
Auto-Submit: Damien Neil <dneil@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
(cherry picked from commit a8564bd412d4495a6048f981d30d4d7abb1e45a7)
Reviewed-on: https://go-review.googlesource.com/c/go/+/696196
src/internal/synctest/synctest_test.go
src/runtime/chan.go
src/runtime/select.go
src/runtime/time.go