PR go/60931 runtime: Fix garbage collector issue with non 4kB system page size The go garbage collector tracks memory in terms of 4kB pages. Most of the code checks getpagesize() at runtime and does the right thing. On a 64kB ppc64 box I see SEGVs in long running processes which has been diagnosed as a bug in scavengelist. scavengelist does a madvise(MADV_DONTNEED) without rounding the arguments to the system page size. A strace of one of the failures shows the problem: madvise(0xc211030000, 4096, MADV_DONTNEED) = 0 The kernel rounds the length up to 64kB and we mark 60kB of valid data as no longer needed. Round start up to a system page and end down before calling madvise. From-SVN: r209777
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
arch.h | Loading commit data... | |
array.h | Loading commit data... | |
chan.c | Loading commit data... | |
cpuprof.c | Loading commit data... | |
defs.h | Loading commit data... | |
env_posix.c | Loading commit data... | |
getncpu-bsd.c | Loading commit data... | |
getncpu-irix.c | Loading commit data... | |
getncpu-linux.c | Loading commit data... | |
getncpu-none.c | Loading commit data... | |
getncpu-solaris.c | Loading commit data... | |
go-alloc.h | Loading commit data... | |
go-append.c | Loading commit data... | |
go-assert-interface.c | Loading commit data... | |
go-assert.c | Loading commit data... | |
go-assert.h | Loading commit data... | |
go-breakpoint.c | Loading commit data... | |
go-byte-array-to-string.c | Loading commit data... | |
go-caller.c | Loading commit data... | |
go-callers.c | Loading commit data... | |
go-can-convert-interface.c | Loading commit data... | |
go-cdiv.c | Loading commit data... | |
go-cgo.c | Loading commit data... | |
go-check-interface.c | Loading commit data... | |
go-construct-map.c | Loading commit data... | |
go-convert-interface.c | Loading commit data... | |
go-copy.c | Loading commit data... | |
go-defer.c | Loading commit data... | |
go-defer.h | Loading commit data... | |
go-deferred-recover.c | Loading commit data... | |
go-eface-compare.c | Loading commit data... | |
go-eface-val-compare.c | Loading commit data... | |
go-fieldtrack.c | Loading commit data... | |
go-getgoroot.c | Loading commit data... | |
go-int-array-to-string.c | Loading commit data... | |
go-int-to-string.c | Loading commit data... | |
go-interface-compare.c | Loading commit data... | |
go-interface-eface-compare.c | Loading commit data... | |
go-interface-val-compare.c | Loading commit data... | |
go-main.c | Loading commit data... | |
go-make-slice.c | Loading commit data... | |
go-map-delete.c | Loading commit data... | |
go-map-index.c | Loading commit data... | |
go-map-len.c | Loading commit data... | |
go-map-range.c | Loading commit data... | |
go-matherr.c | Loading commit data... | |
go-memcmp.c | Loading commit data... | |
go-nanotime.c | Loading commit data... | |
go-new-map.c | Loading commit data... | |
go-new.c | Loading commit data... | |
go-nosys.c | Loading commit data... | |
go-now.c | Loading commit data... | |
go-panic.c | Loading commit data... | |
go-panic.h | Loading commit data... | |
go-print.c | Loading commit data... | |
go-recover.c | Loading commit data... | |
go-reflect-call.c | Loading commit data... | |
go-reflect-map.c | Loading commit data... | |
go-rune.c | Loading commit data... | |
go-runtime-error.c | Loading commit data... | |
go-setenv.c | Loading commit data... | |
go-signal.c | Loading commit data... | |
go-strcmp.c | Loading commit data... | |
go-string-to-byte-array.c | Loading commit data... | |
go-string-to-int-array.c | Loading commit data... | |
go-string.h | Loading commit data... | |
go-strplus.c | Loading commit data... | |
go-strslice.c | Loading commit data... | |
go-traceback.c | Loading commit data... | |
go-trampoline.c | Loading commit data... | |
go-type-complex.c | Loading commit data... | |
go-type-eface.c | Loading commit data... | |
go-type-error.c | Loading commit data... | |
go-type-float.c | Loading commit data... | |
go-type-identity.c | Loading commit data... | |
go-type-interface.c | Loading commit data... | |
go-type-string.c | Loading commit data... | |
go-type.h | Loading commit data... | |
go-typedesc-equal.c | Loading commit data... | |
go-typestring.c | Loading commit data... | |
go-unsafe-new.c | Loading commit data... | |
go-unsafe-newarray.c | Loading commit data... | |
go-unsafe-pointer.c | Loading commit data... | |
go-unwind.c | Loading commit data... | |
go-varargs.c | Loading commit data... | |
goc2c.c | Loading commit data... | |
iface.goc | Loading commit data... | |
interface.h | Loading commit data... | |
lfstack.c | Loading commit data... | |
lock_futex.c | Loading commit data... | |
lock_sema.c | Loading commit data... | |
malloc.goc | Loading commit data... | |
malloc.h | Loading commit data... | |
map.goc | Loading commit data... | |
map.h | Loading commit data... | |
mcache.c | Loading commit data... | |
mcentral.c | Loading commit data... | |
mem.c | Loading commit data... | |
mem_posix_memalign.c | Loading commit data... | |
mfinal.c | Loading commit data... | |
mfixalloc.c | Loading commit data... | |
mgc0.c | Loading commit data... | |
mgc0.h | Loading commit data... | |
mheap.c | Loading commit data... | |
mprof.goc | Loading commit data... | |
msize.c | Loading commit data... | |
netpoll.goc | Loading commit data... | |
netpoll_epoll.c | Loading commit data... | |
netpoll_kqueue.c | Loading commit data... | |
netpoll_select.c | Loading commit data... | |
netpoll_stub.c | Loading commit data... | |
panic.c | Loading commit data... | |
parfor.c | Loading commit data... | |
print.c | Loading commit data... | |
proc.c | Loading commit data... | |
race.h | Loading commit data... | |
reflect.goc | Loading commit data... | |
rtems-task-variable-add.c | Loading commit data... | |
runtime.c | Loading commit data... | |
runtime.h | Loading commit data... | |
runtime1.goc | Loading commit data... | |
sema.goc | Loading commit data... | |
signal_unix.c | Loading commit data... | |
signal_unix.h | Loading commit data... | |
sigqueue.goc | Loading commit data... | |
string.goc | Loading commit data... | |
thread-linux.c | Loading commit data... | |
thread-sema.c | Loading commit data... | |
thread.c | Loading commit data... | |
time.goc | Loading commit data... | |
yield.c | Loading commit data... |