From 208a1ea564e8b1ce8d6d85a315a410f29d5e952e Mon Sep 17 00:00:00 2001
From: Russ Cox
+Starting with Go 1.3, the runtime assumes that values with pointer type
+contain pointers and other values do not.
+This assumption is fundamental to the precise behavior of both stack expansion
+and garbage collection.
+Programs that use package unsafe
+to store uintptrs
in pointer values are illegal and will crash if the runtime detects the behavior.
+Programs that use package unsafe to store pointers
+in uintptr
values are also illegal but more difficult to diagnose during execution.
+Because the pointers are hidden from the runtime, a stack expansion or garbage collection
+may reclaim the memory they point at, creating
+dangling pointers.
+
+Updating: Code that converts a uintptr
value stored in memory
+to unsafe.Pointer
is illegal and must be rewritten.
+Such code can be identified by go vet
.
+