Skip to content

x/telemetry: stack counters should use logical symbol names #66517

Open
@adonovan

Description

@adonovan

Currently, the stack counters reported by telemetry use the runtime's symbol names. While they are useful information for binary-based tools, they are hostile to source-based downstream tooling because they obscure the actual package of the function name in the presence of inlining, and this information cannot be restored without type checking the source. See #64654 (comment) for an example.

I propose that x/telemetry post-processes the result of CallersFrames into a form that provides the file, (relative) line and logical (not inlined) symbol name---assuming the runtime frames provide sufficient information to make this feasible.

For example, this symbol in the current format:

golang.org/x/tools/gopls/internal/lsprpc.(*streamServer).ServeStream.ServerHandler.func3:+5

would be translated to something like:

golang.org/x/tools/gopls/internal/protocol/protocol.go:ServerHandler+5

(I suspect the name with the "true" anonymous function suffix "ServerHandler.func1" would not be available, but if it is, let's use that.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.telemetryx/telemetry issues

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions