// run // Copyright 2019 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. // Make sure the runtime can scan args of an unstarted goroutine // which starts with a reflect-generated function. package main import ( "reflect" "runtime" ) const N = 100 type T struct { } func (t *T) Foo(c chan bool) { c <- true } func main() { t := &T{} runtime.GOMAXPROCS(1) c := make(chan bool, N) for i := 0; i < N; i++ { f := reflect.ValueOf(t).MethodByName("Foo").Interface().(func(chan bool)) go f(c) } runtime.GC() for i := 0; i < N; i++ { <-c } }