Hi! I get this crash when using the GODEBUG option gccheckmark=1:
runtime: marking free object 0xc0016c5668 found at *(0xc0046ca8e0+0x8) base=0xc0046ca8e0 s.base()=0xc0046ca000 s.limit=0xc0046cc000 s.spanclass=8 s.elemsize=32 s.state=mSpanInUse *(base+0) = 0x15e11f0 *(base+8) = 0xc0016c5668 <== *(base+16) = 0x28 *(base+24) = 0xc004642030 obj=0xc0016c5668 s.base()=0xc0016c4000 s.limit=0xc0016c5ff8 s.spanclass=6 s.elemsize=24 s.state=mSpanInUse *(obj+0) = 0x15e0e80 *(obj+8) = 0xc00039c080 *(obj+16) = 0xc0016c5650 fatal error: marking free object runtime stack: runtime.throw({0x132362a?, 0x3?}) /usr/local/go-1.21.0/src/runtime/panic.go:1077 +0x5c fp=0x7f9636366d48 sp=0x7f9636366d18 pc=0x43aa9c runtime.greyobject(0xc0016c5668, 0x1?, 0x7f9636366df8?, 0x6590?, 0x7f9636366df8?, 0x7f9636366de0?) /usr/local/go-1.21.0/src/runtime/mgcmark.go:1476 +0x285 fp=0x7f9636366d98 sp=0x7f9636366d48 pc=0x424d85 runtime.scanobject(0xc0046ca8e0, 0xc00004d240) /usr/local/go-1.21.0/src/runtime/mgcmark.go:1336 +0x171 fp=0x7f9636366e20 sp=0x7f9636366d98 pc=0x424711 runtime.gcDrain(0xc00004d240, 0x7) /usr/local/go-1.21.0/src/runtime/mgcmark.go:1103 +0x1ba fp=0x7f9636366e80 sp=0x7f9636366e20 pc=0x423fba runtime.gcBgMarkWorker.func2() /usr/local/go-1.21.0/src/runtime/mgc.go:1385 +0x6f fp=0x7f9636366ed0 sp=0x7f9636366e80 pc=0x4208af runtime.systemstack() /usr/local/go-1.21.0/src/runtime/asm_amd64.s:509 +0x4a fp=0x7f9636366ee0 sp=0x7f9636366ed0 pc=0x46b1aa >From the docs, I understand this 2nd pass stop-the-world verification guarantees the concurrent mark step did not follow the pointer, aka this is a GC bug? A confirmation would be greatly appreciated to help me follow the right trail. *Context* I'm building a type-system on top of Go for user-defined data structures. For efficient implementation, I'm using unsafe.Pointer-s heavily. I believe I understand pointer conversion rules, span classes, that there is metadata on the side to differentiate ordinary values from pointers and how it is used to follow pointer chains. Go vet detects no issues. I've been debugging this for 4 days. Many thanks! -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/59b6e020-a8e6-4310-b28a-ffd228b30787n%40googlegroups.com.