Meador Inge
995a46bbfb
get_nprocs: Only return explictly set cache values (BZ #16996 )
...
The implementation of __get_nprocs uses a stactic variable to cache
the value of the current number of processors. The caching breaks when
'time (NULL) == 0':
$ cat nproc.c
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
int main(int argc, char *argv[])
{
time_t t;
struct timeval tv = {0, 0};
printf("settimeofday({0, 0}, NULL) = %d\n", settimeofday(&tv, NULL));
t = time(NULL);
printf("Time: %d, CPUs: %d\n", (unsigned int)t, get_nprocs());
return 0;
}
$ gcc -O3 nproc.c
$ ./a.out
settimeofday({0, 0}, NULL) = -1
Time: 1401311578, CPUs: 4
$ sudo ./a.out
settimeofday({0, 0}, NULL) = 0
Time: 0, CPUs: 0
The problem is with the condition used to check whether a cached
value should be returned or not:
static int cached_result;
static time_t timestamp;
time_t now = time (NULL);
time_t prev = timestamp;
atomic_read_barrier ();
if (now == prev)
return cached_result;
This patch fixes the problem by ensuring that 'cached_result' has
been set at least once before returning it.
2014-06-13 14:02:04 +05:30
..
2014-06-11 12:23:01 -07:00
2014-06-11 12:23:35 -07:00
2014-06-09 12:53:16 -07:00
2014-03-18 14:48:09 -07:00
2014-05-14 11:06:36 -07:00
2014-06-09 23:22:20 -04:00
2014-06-09 12:52:55 -07:00
2014-05-27 15:43:45 -07:00
2014-06-09 15:54:19 -07:00
2014-05-14 00:45:19 +00:00
2014-06-09 13:47:38 -07:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-12 23:41:01 +00:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-06-11 12:23:17 -07:00
2014-03-24 16:59:01 +01:00
2014-01-01 22:00:23 +10:00
2014-06-12 09:05:54 -07:00
2014-06-12 15:04:34 -07:00
2014-01-06 08:07:33 -05:00
2014-06-11 15:52:53 -04:00
2014-02-10 15:07:12 +01:00
2014-05-14 15:32:18 -07:00
2014-05-16 11:17:41 -07:00
2014-01-01 22:00:23 +10:00
2013-06-05 20:44:03 +00:00
2014-02-20 17:50:31 +00:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-05-16 11:47:13 -07:00
2014-01-01 22:00:23 +10:00
2014-03-25 15:17:08 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-05-08 11:27:14 -07:00
2014-05-08 11:27:14 -07:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-02-06 08:46:20 +10:00
2014-02-06 08:46:20 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-05-13 09:49:20 -07:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-05-29 09:41:29 +05:30
2014-05-29 09:41:29 +05:30
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-06-13 14:02:04 +05:30
2013-07-21 15:39:55 -04:00
2014-01-01 22:00:23 +10:00
2014-06-05 19:25:23 +02:00
2014-01-01 22:00:23 +10:00
2014-06-12 13:48:47 -07:00
2014-02-20 17:50:31 +00:00
2014-02-20 17:53:08 +00:00
2014-02-20 17:55:35 +00:00
2014-05-29 09:41:29 +05:30
2014-01-01 22:00:23 +10:00
2013-11-26 12:32:28 +01:00
2014-01-01 22:00:23 +10:00
2014-05-14 00:45:19 +00:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-02-08 06:39:10 -05:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-05-13 09:49:20 -07:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-05-16 15:45:58 -07:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2013-05-03 16:33:26 -07:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-06-12 13:48:47 -07:00
2014-01-01 22:00:23 +10:00
2014-05-16 00:07:29 +02:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-20 17:53:08 +00:00
2014-02-10 15:07:12 +01:00
2013-08-27 10:34:16 -07:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-20 17:55:35 +00:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-06-12 10:32:18 -07:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-05-29 09:41:29 +05:30
2014-05-29 09:41:29 +05:30
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-05-12 22:48:25 +00:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-04 08:34:01 -05:00
2014-02-10 15:07:12 +01:00
2014-02-10 15:07:12 +01:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2013-12-22 14:49:48 +00:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-02-10 15:07:12 +01:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00
2014-01-01 22:00:23 +10:00