From 6a1cac27005f5e37c9c4acd0f63121e61b41ae3c Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Tue, 3 Jan 2017 00:15:05 -0800 Subject: runtime: check sched_getaffinity return value Android on ChromeOS uses a restrictive seccomp filter that blocks sched_getaffinity, leading this code to index a slice by -errno. Change-Id: Iec09a4f79dfbc17884e24f39bcfdad305de75b37 Reviewed-on: https://go-review.googlesource.com/34794 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor --- src/runtime/os_linux.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/runtime/os_linux.go b/src/runtime/os_linux.go index 213b951a6b..a6efc0e3d1 100644 --- a/src/runtime/os_linux.go +++ b/src/runtime/os_linux.go @@ -91,6 +91,9 @@ func getproccount() int32 { const maxCPUs = 64 * 1024 var buf [maxCPUs / (sys.PtrSize * 8)]uintptr r := sched_getaffinity(0, unsafe.Sizeof(buf), &buf[0]) + if r < 0 { + return 1 + } n := int32(0) for _, v := range buf[:r/sys.PtrSize] { for v != 0 { -- cgit v1.2.3-54-g00ecf