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

Comment From: gopherbot

Change https://go.dev/cl/696955 mentions this issue: cmd/compile: export to DWARF types only referenced through interfaces

Comment From: gopherbot

Change https://go.dev/cl/704335 mentions this issue: [release-branch.go1.25] cmd/compile: export to DWARF types only referenced through interfaces