The Wire · Showcase
RUNTIME MUTEX PROFILING LANDS, ARCHIVE/ZIP GETS CRITICAL FIX
By RepoJournal · Filed · About Go
Go's runtime now splits mutex lock tracking from preemption disable, unblocking safe contention profiling while a major Zip64 writer bug gets patched.
The core runtime change [1] separates gp.m.locks into two distinct mechanisms: one for tracking actual mutex holds and another for preemption disabling. This architectural split enables the mutex contention profiler to safely acquire mutexes during sampling without false positives. It's a careful fix that impacts how every Go program running on multiple goroutines manages synchronization visibility. Separately, archive/zip [2] shipped a critical writer-side Zip64 edge case fix that was causing mysterious failures when uploading files to external services. The bug manifested only in files larger than 4GiB but smaller than 6.5GiB, making it nearly impossible to debug. On the profile front, internal/profile [3] now correctly returns errors from gzip.Writer.Close in Profile.Write, preventing silent data corruption when pprof serialization fails due to disk full or broken pipes. The tooling desk is busy too: gopls [4] fixed generic method hover support and [5] corrected long-broken inlay hint logic in var specs, while the modernize analyzer [6] now handles negated error type assertions properly.
Action items
- → Review runtime mutex profiling changes if you maintain observability tooling golang/go [plan]
- → Upgrade to latest archive/zip if generating files over 4GiB golang/go [immediate]
- → Update pprof callers to handle Profile.Write errors golang/go [plan]
- → Update gopls for generic method hover and inlay hint fixes golang/tools [monitor]
References
- [1] runtime: split gp.m.locks bits for lock vs acquirem golang/go
- [2] archive/zip: fix writer-side Zip64 edge cases golang/go
- [3] internal/profile: return error from gzip.Writer.Close in Profile.Write golang/go
- [4] gopls/internal/golang: Hover: add test of generic methods golang/tools
- [5] gopls/internal/golang: InlayHint: fix bug in 'var' specs golang/tools
- [6] go/analysis/passes/modernize: errorsastype: support negated case golang/tools
- [7] x86/x86asm: support AVX instructions golang/arch
FAQ
- What changed in Go on May 21, 2026?
- Go's runtime now splits mutex lock tracking from preemption disable, unblocking safe contention profiling while a major Zip64 writer bug gets patched.
- What should Go teams do about it?
- Review runtime mutex profiling changes if you maintain observability tooling • Upgrade to latest archive/zip if generating files over 4GiB • Update pprof callers to handle Profile.Write errors
- Which Go repositories shipped on May 21, 2026?
- golang/go, golang/tools, golang/arch