diff --git a/src/server.c b/src/server.c index 146e12954..565cd9467 100644 --- a/src/server.c +++ b/src/server.c @@ -6585,9 +6585,12 @@ int main(int argc, char **argv) { setlocale(LC_COLLATE,""); tzset(); /* Populates 'timezone' global. */ zmalloc_set_oom_handler(redisOutOfMemoryHandler); - srand(time(NULL)^getpid()); - srandom(time(NULL)^getpid()); + + /* To achieve entropy, in case of containers, their time() and getpid() can + * be the same. But value of tv_usec is fast enough to make the difference */ gettimeofday(&tv,NULL); + srand(time(NULL)^getpid()^tv.tv_usec); + srandom(time(NULL)^getpid()^tv.tv_usec); init_genrand64(((long long) tv.tv_sec * 1000000 + tv.tv_usec) ^ getpid()); crc64_init();