cch123 / blog_comment

comments of xargin.com
8 stars 0 forks source link

Go 1.9.2 的 bug #84

Open cch123 opened 6 years ago

cch123 commented 6 years ago

http://xargin.com/go-bug/

herohenu commented 4 years ago

使用go 1.14.1 还是有这个问题 所以有没有根本的解决办法呢

cch123 commented 4 years ago

@herohenu ,你在啥环境运行的呀,按说之后的版本都修正了的 我在 mac 的 1.14.2 上跑这个是没问题的:

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{}{}
    }
  }
}