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