Search code examples
gopprof

glob.func in pprof heap profiles


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?enter image description here


Solution

  • 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