From d596bc0e819aec2cf65a61d8b92f6bec8e0a7124 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Fri, 9 May 2025 16:18:49 -0700 Subject: runtime: disallow closing bubbled chans from outside bubble A chan created within a synctest bubble may not be operated on from outside the bubble. We panicked on send and receive, but not close. Panic on close as well. For #67434 Change-Id: I98d39e0cf7baa1a679aca1fb325453d69c535308 Reviewed-on: https://go-review.googlesource.com/c/go/+/671960 LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Pratt Auto-Submit: Damien Neil --- src/runtime/chan.go | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/runtime') diff --git a/src/runtime/chan.go b/src/runtime/chan.go index cb2737d096..63d8044b44 100644 --- a/src/runtime/chan.go +++ b/src/runtime/chan.go @@ -415,6 +415,9 @@ func closechan(c *hchan) { if c == nil { panic(plainError("close of nil channel")) } + if c.synctest && getg().bubble == nil { + panic(plainError("close of synctest channel from outside bubble")) + } lock(&c.lock) if c.closed != 0 { -- cgit v1.3