From 993151bc409c273409dbbaaac192091c864f3823 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Mon, 20 Jan 2014 13:56:26 +0100 Subject: [PATCH] linux: relax assumption on /proc/stat parsing CPU entries in /proc/stat are not guaranteed to be monotonically increasing, asserting on this assumption can break in cases such as the UltraSparc II machine shown in #1080. Signed-off-by: Luca Bruno --- src/unix/linux-core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/unix/linux-core.c b/src/unix/linux-core.c index 7c34ea16..74294eb2 100644 --- a/src/unix/linux-core.c +++ b/src/unix/linux-core.c @@ -601,9 +601,9 @@ static int read_times(unsigned int numcpus, uv_cpu_info_t* ci) { /* skip "cpu " marker */ { - unsigned int n = num; + unsigned int n; + assert(sscanf(buf, "cpu%u ", &n) == 1); for (len = sizeof("cpu0"); n /= 10; len++); - assert(sscanf(buf, "cpu%u ", &n) == 1 && n == num); } /* Line contains user, nice, system, idle, iowait, irq, softirq, steal, @@ -630,6 +630,7 @@ static int read_times(unsigned int numcpus, uv_cpu_info_t* ci) { ci[num++].cpu_times = ts; } fclose(fp); + assert(num == numcpus); return 0; }