]> Cypherpunks repositories - gostls13.git/commit
runtime: poison the write barrier buffer during flushing
authorAustin Clements <austin@google.com>
Mon, 17 Dec 2018 18:45:14 +0000 (13:45 -0500)
committerAustin Clements <austin@google.com>
Mon, 17 Dec 2018 19:35:11 +0000 (19:35 +0000)
commitfe2feb978e0c4324047f749c3fcfb9cecaafcfdc
tree4e89bbd551da5869cb8068697e563b2ea53dde1f
parentbed88f4e81013433ff47fb2661a329530b57ede6
runtime: poison the write barrier buffer during flushing

Currently we reset the write barrier buffer before processing the
pointers in it. As a result, if there were any write barriers in the
code that processes the buffer, it would corrupt the write barrier
buffer and cause us to mark objects without later scanning them.

As far as I can tell, this shouldn't be happening, but rather than
relying on hope (and incomplete static analysis), this CL changes
wbBufFlush1 to poison the write barrier buffer while processing it,
and only reset it once it's done.

Updates #27993. (Unlike many of the other changes for this issue,
there's no need to roll back this CL. It's a good change in its own
right.)

Change-Id: I6d2d9f1b69b89438438b9ee624f3fff9f009e29d
Reviewed-on: https://go-review.googlesource.com/c/154537
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/runtime/mwbbuf.go