From 52a45818a13bc32156ada02554eef76e1124b618 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 7 Oct 2004 00:03:15 +0000
Subject: [PATCH] XOR process PID into a backend's initial random seed, to
 ensure that different backends get a reasonably wide set of initial seeds
 even if gettimeofday returns tv_usec values with only a few bits of
 precision. Per recent discussion.

---
 src/backend/postmaster/postmaster.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 34d71483ef5..3fa5409c3fa 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.426 2004/10/06 09:35:21 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.427 2004/10/07 00:03:15 tgl Exp $
  *
  * NOTES
  *
@@ -2575,8 +2575,6 @@ static int
 BackendRun(Port *port)
 {
 	int			status;
-	struct timeval now;
-	struct timezone tz;
 	char		remote_host[NI_MAXHOST];
 	char		remote_port[NI_MAXSERV];
 	char		remote_ps_data[NI_MAXHOST];
@@ -2754,9 +2752,7 @@ BackendRun(Port *port)
 	 * start a new random sequence in the random() library function.
 	 */
 	random_seed = 0;
-	gettimeofday(&now, &tz);
-	srandom((unsigned int) now.tv_usec);
-
+	srandom((unsigned int) (MyProcPid ^ port->session_start.tv_usec));
 
 	/* ----------------
 	 * Now, build the argv vector that will be given to PostgresMain.
-- 
GitLab