// run // Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Issue 51401: bad inline info in generated interface method wrapper // causes infinite loop in stack unwinding. package main import "runtime" type Outer interface{ Inner } type impl struct{} func New() Outer { return &impl{} } type Inner interface { DoStuff() error } func (a *impl) DoStuff() error { return newError() } func newError() error { stack := make([]uintptr, 50) runtime.Callers(2, stack[:]) return nil } func main() { funcs := listFuncs(New()) for _, f := range funcs { f() } } func listFuncs(outer Outer) []func() error { return []func() error{outer.DoStuff} }