-
Notifications
You must be signed in to change notification settings - Fork 240
Open
Description
Context
Hello, I'm currently working on open-telemetry/opentelemetry-collector-contrib#30438 to enable goleak to check for leaked goroutines.
Bug
Here's the goleak output for the leaking goroutine:
[Goroutine 13 in state sync.Cond.Wait, with sync.runtime_notifyListWait on top of the stack:
sync.runtime_notifyListWait(0xc002140d10, 0x0)
/usr/local/Cellar/go/1.21.0/libexec/src/runtime/sema.go:527 +0x159
sync.(*Cond).Wait(0x0?)
/usr/local/Cellar/go/1.21.0/libexec/src/sync/cond.go:70 +0x85
github.com/cihub/seelog.(*asyncLoopLogger).processItem(0xc0020e46c0)
/Users/crobert/go/pkg/mod/github.com/cihub/seelog@v0.0.0-20170130134532-f561c5e57575/behavior_asynclooplogger.go:50 +0x99
github.com/cihub/seelog.(*asyncLoopLogger).processQueue(0xc0020e46c0)
/Users/crobert/go/pkg/mod/github.com/cihub/seelog@v0.0.0-20170130134532-f561c5e57575/behavior_asynclooplogger.go:63 +0x33
created by github.com/cihub/seelog.NewAsyncLoopLogger in goroutine 1
/Users/crobert/go/pkg/mod/github.com/cihub/seelog@v0.0.0-20170130134532-f561c5e57575/behavior_asynclooplogger.go:40 +0xcf
Here's the line that causing it:
seelog/behavior_asynclooplogger.go
Line 40 in f561c5e
| go asnLoopLogger.processQueue() |
This call is happening on init(), which means the goroutine is started when a package is imported, even if it isn't used.
Solution
It's generally not good practice to start a goroutine in init. The best solution here would only be start the goroutine when required, and provide a public API to stop it.
Related:
#86
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels