]> Cypherpunks repositories - gostls13.git/commit
runtime: make all synctest bubble violations fatal panics
authorDamien Neil <dneil@google.com>
Thu, 14 Aug 2025 17:27:54 +0000 (10:27 -0700)
committerGopher Robot <gobot@golang.org>
Thu, 14 Aug 2025 19:20:59 +0000 (12:20 -0700)
commita8564bd412d4495a6048f981d30d4d7abb1e45a7
treeaa69dbad941308b1b6817cd313d9746d3c9d3349
parent924fe98902cdebf20825ab5d1e4edfc0fed2966f
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.

Fixes #74837

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>
src/internal/synctest/synctest_test.go
src/runtime/chan.go
src/runtime/select.go
src/runtime/time.go