# HG changeset patch # User Ruslan Ermilov # Date 1470262541 -10800 # Node ID 09c918460cc67f1c4e9c222e36051dc0343b2c20 # Parent d43ee392e825186545d81e683b88cc58ef8479bc Win32: added per-thread random seeding. The change in b91bcba29351 was not enough to fix random() seeding. On Windows, the srand() seeds the PRNG only in the current thread, and worse, is not inherited from the calling thread. Due to this, worker threads were not properly seeded. Reported by Marc Bevand. diff --git a/src/os/win32/ngx_process_cycle.c b/src/os/win32/ngx_process_cycle.c --- a/src/os/win32/ngx_process_cycle.c +++ b/src/os/win32/ngx_process_cycle.c @@ -764,6 +764,8 @@ ngx_worker_thread(void *data) ngx_int_t n; ngx_cycle_t *cycle; + srand((ngx_pid << 16) ^ (unsigned) ngx_time()); + cycle = (ngx_cycle_t *) ngx_cycle; for (n = 0; cycle->modules[n]; n++) {