Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

runtime/pprof: debug=1 output includes 0x0 line in each block #16349

Closed
rhysh opened this issue Jul 13, 2016 · 1 comment
Closed

runtime/pprof: debug=1 output includes 0x0 line in each block #16349

rhysh opened this issue Jul 13, 2016 · 1 comment

Comments

@rhysh
Copy link
Contributor

rhysh commented Jul 13, 2016

In go1.7rc1, there's an extra line of output in each block of comments in debug=1 profiles. It has address 0x0, and does not include a function name. It seems to correspond to the runtime.goexit frame. I don't know that this is hurting anything (the data lines seem to be valid and unchanged, it's just a difference in the comments), though I also don't know the extent to which tools in the wild make use of those comment lines.


  1. What version of Go are you using (go version)?

I see this behavior in go1.7rc1, and not in go1.6.2.

  1. What operating system and processor architecture are you using (go env)?

linux/amd64

  1. What did you do?

I visually scanned a /debug/pprof/goroutine?debug=1 profile.

  1. What did you expect to see?

I'd expect each non-comment profile line to end with an address in runtime.goexit. I'd expect to not see an associated line in the following comments.

  1. What did you see instead?

The goroutine profile has each stack starting at an address in runtime.goexit. In go1.6.2, this stack frame doesn't get an associated comment in debug=1 profiles. In go1.7rc1, it gets a comment for the frame, showing address 0x0 and no associated symbol name.

go1.6.2:

6 @ 0x439737 0x4490c9 0x4485fc 0x5e1c6b 0x46d681
#   0x5e1c6b    net/http.(*persistConn).writeLoop+0x49b /usr/local/go/src/net/http/transport.go:1277

and from go tool objdump:

TEXT runtime.goexit(SB) /usr/local/go/src/runtime/asm_amd64.s
    asm_amd64.s:1998    0x46d680    90      NOPL
    asm_amd64.s:1999    0x46d681    e8fa1efdff  CALL runtime.goexit1(SB)
    asm_amd64.s:2001    0x46d686    90      NOPL

go1.7rc1:

4 @ 0x43316a 0x442685 0x44148c 0x59211d 0x463b81
#   0x59211c    net/http.(*persistConn).writeLoop+0x3bc /usr/local/go/src/net/http/transport.go:1594
#   0x0

and from go tool objdump:

TEXT runtime.goexit(SB) /usr/local/go/src/runtime/asm_amd64.s
    asm_amd64.s:2086    0x463b80    90      NOPL
    asm_amd64.s:2087    0x463b81    e8ca4dfdff  CALL runtime.goexit1(SB)
    asm_amd64.s:2089    0x463b86    90      NOPL
@ianlancetaylor ianlancetaylor self-assigned this Jul 13, 2016
@ianlancetaylor ianlancetaylor added this to the Go1.7Maybe milestone Jul 13, 2016
@gopherbot
Copy link

CL https://golang.org/cl/24911 mentions this issue.

@golang golang locked and limited conversation to collaborators Jul 13, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants