Add goroutine leak profile to `ipfs diag profile`
- Dominant language
- Go
- Stars
- 17.1k
- Forks
- 3.2k
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 11
Description
Go 1.26 ships an experimental [goroutine leak profiler](https://go.dev/doc/go1.26#goroutineleak-profiles) (`GOEXPERIMENT=goroutineleakprofile`). It detects goroutines blocked on channels, mutexes, or
conditions that can never unblock, using GC reachability analysis. Zero runtime overhead unless actively collecting.
Available at `/debug/pprof/goroutineleak` when enabled.
### Proposal
Once 1.27 ships with it enabled by default:
- Add a `goroutine-leak` collector to `ipfs diag profile --collectors` (gated on the experiment being available at runtime)
- Expose it via the existing `/debug/pprof/` endpoint on the API port
This would help diagnose daemon goroutine leaks without external tooling. Useful for long-running nodes where leaked goroutines accumulate over time.
### References
- https://go.dev/doc/go1.26#goroutineleak-profiles
- `runtime/pprof` goroutineleak profile
- Expected to be enabled by default in Go 1.27
Contributor guide
Assessment
This issue has not been assessed yet.