Skip to content

cmd/compile: no debug information emitted for type used only as initializer #46670

@heschi

Description

@heschi

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

$ go version
1.16.3

Does this issue reproduce with the latest release?

Yes, and at tip.

What did you do?

Debug the following program:

package main

import "fmt"

type inner struct{ val string }

type outer struct {
        val interface{}
}

var g = outer {
        val: inner{val: "val"},
}

func main() {
        fmt.Println(g) // breakpoint here and inspect g
}

What did you expect to see?

A legible value for g.

What did you see instead?

An error: val: (unreadable interface type "main.inner" not found for 0x555a68: no type entry found, use 'types' for a list of valid types),}

I think the problem is that because the inner type is only used in an initializer, there's never a need to reference its runtime type symbol in code. Because of that, the linker is able to prune the type symbol, and therefore never generates DWARF for the type.

cc @thanm

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.compiler/runtimeIssues related to the Go compiler and/or runtime.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions