-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Open
Labels
NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.Someone 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.Issues related to the Go compiler and/or runtime.
Milestone
Description
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
ajwerner
Metadata
Metadata
Assignees
Labels
NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.Someone 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.Issues related to the Go compiler and/or runtime.