When doing a heap profile using go tool pprof
, I see some entries like github.com/anacrolix/utp.glob.func1
. This doesn't correspond to any named function I can see, I assume it's a closure. What does glob
refer to? How can I associate names like this to the appropriate function?
glob
refers to global environment, func1
means anonymous function. So it should refer to some global anonymous function. Check this example and its panic information:
Example:
package main
import (
"fmt"
)
var (
p = func() string {
panic("a")
return "asdf"
}()
)
func main() {
fmt.Println(p)
}
Panic information:
panic: a
goroutine 1 [running]:
panic(0x128360, 0x1040a120)
/usr/local/go/src/runtime/panic.go:464 +0x700
main.glob.func1(0x0, 0x0)
/tmp/sandbox715198144/main.go:9 +0x80
main.init()
/tmp/sandbox715198144/main.go:12 +0xa0