func racer() { var ( ptr1 *uintptr ptr2 *byte race any done = make(chan struct{}) ) put := func(x any) { for { select { case <-done: return default: race = x } } } go put(ptr1) go put(&ptr2) for { var ok bool ptr1, ok = race.(*uintptr) if ok && ptr1 != nil { close(done) break } } get := func(addr uintptr) byte { *ptr1 = addr return *ptr2 } set := func(addr uintptr, to byte) { *ptr1 = addr *ptr2 = to } if get(0xdeadbeef) == 111 { set(0xbaaaaaad, 222) } }
To receive a hint, submit unfixed code.