]> Cypherpunks repositories - gostls13.git/commit
runtime: make sure heapBitsBulkBarrier cannot be preempted
authorRuss Cox <rsc@golang.org>
Fri, 7 Aug 2015 17:34:56 +0000 (13:34 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 7 Aug 2015 17:55:26 +0000 (17:55 +0000)
commit3ae17043f7f29f0d745aa35b340f8cab80219068
tree7088dfa8b8e4b271802dbd937aad16c3837b9ecf
parent4a190813587369371186e5d98182d74db10234d3
runtime: make sure heapBitsBulkBarrier cannot be preempted

Changes the torture test in #12068 from failing about 1/10 times
to not failing in almost 2,000 runs.

This was only happening in -race mode because functions are
bigger in -race mode, so a few of the helpers for heapBitsBulkBarrier
were not being inlined, and they were not marked nosplit,
so (only in -race mode) the write barrier was being preempted by GC,
causing missed pointer updates.

Filed issue #12069 for diagnosis of any other similar errors.

Fixes #12068.

Change-Id: Ic174d9b050ba278b18b08ab0d85a73c33bd5b175
Reviewed-on: https://go-review.googlesource.com/13364
Reviewed-by: Austin Clements <austin@google.com>
src/runtime/mbitmap.go