golang issue22781 代码
文件路径:/test/fixedbugs/issue22781.go
/ run
/ Copyright 2017 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.
package main
import "runtime/debug"
type T struct {
/ >= 16 bytes to avoid tiny alloc.
a, b int
}
func main() {
debug.SetGCPercent(1)
for i := 0; i < 100000; i++ {
m := make(map[*T]struct{}, 0)
for j := 0; j < 20; j++ {
/ During the call to mapassign_fast64, the key argument
/ was incorrectly treated as a uint64. If the stack was
/ scanned during that call, the only pointer to k was
/ missed, leading to *k being collected prematurely.
k := new(T)
m[k] = struct{}{}
}
}
}