]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.7] runtime: fix check for vacuous page boundary rounding again
authorAustin Clements <austin@google.com>
Fri, 19 Aug 2016 20:03:14 +0000 (16:03 -0400)
committerChris Broadfoot <cbro@golang.org>
Wed, 7 Sep 2016 18:48:36 +0000 (18:48 +0000)
The previous fix for this, commit 336dad2a, had everything right in
the commit message, but reversed the test in the code. Fix the test in
the code.

This reversal effectively disabled the scavenger on large page systems
*except* in the rare cases where this code was originally wrong, which
is why it didn't obviously show up in testing.

Fixes #16644. Again. :(

Change-Id: I27cce4aea13de217197db4b628f17860f27ce83e
Reviewed-on: https://go-review.googlesource.com/27402
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-on: https://go-review.googlesource.com/28631
Run-TryBot: Chris Broadfoot <cbro@golang.org>

src/runtime/mheap.go

index db60f7a872708f957259c0a008806a50dd27d973..8db2fcc2888bdb04df7a5abde072404be8d7c4eb 100644 (file)
@@ -917,7 +917,9 @@ func scavengelist(list *mSpanList, now, limit uint64) uintptr {
                                // more memory than we want.)
                                start = (start + sys.PhysPageSize - 1) &^ (sys.PhysPageSize - 1)
                                end &^= sys.PhysPageSize - 1
-                               if start == end {
+                               if end <= start {
+                                       // start and end don't span a
+                                       // whole physical page.
                                        continue
                                }
                        }