diff options
Diffstat (limited to 'src/runtime/mbitmap.go')
| -rw-r--r-- | src/runtime/mbitmap.go | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/runtime/mbitmap.go b/src/runtime/mbitmap.go index 369b5ed218..702fccae98 100644 --- a/src/runtime/mbitmap.go +++ b/src/runtime/mbitmap.go @@ -176,7 +176,10 @@ func heapBitsForObject(p uintptr) (base uintptr, hbits heapBits) { x -= mheap_.arena_start >> _PageShift s := h_spans[x] if s == nil || pageID(k) < s.start || p >= s.limit || s.state != mSpanInUse { - if s != nil && s.state == _MSpanStack { + if s == nil || s.state == _MSpanStack { + // If s is nil, the virtual address has never been part of the heap. + // This pointer may be to some mmap'd region, so we allow it. + // Pointers into stacks are also ok, the runtime manages these explicitly. return } |
