From 47a86fa02d0ff58438dea2ef2005a6cd8938f8c4 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Wed, 1 Feb 2006 16:00:06 +0000
Subject: [PATCH] Add code comment about Linux stack randomization and shared
 memory.

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

diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 78d0471f85d..a89be34c099 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.480 2006/02/01 00:31:59 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.481 2006/02/01 16:00:06 momjian Exp $
  *
  * NOTES
  *
@@ -3336,7 +3336,18 @@ SubPostmasterMain(int argc, char *argv[])
 		/* Need a PGPROC to run CreateSharedMemoryAndSemaphores */
 		InitProcess();
 
-		/* Attach process to shared data structures */
+		/*
+		 *	Attach process to shared data structures.  If testing
+		 *	EXEC_BACKEND on Linux, you must run this as root
+		 *	before starting the postmaster:
+		 *
+		 *		echo 0 >/proc/sys/kernel/randomize_va_space
+		 *
+		 *	This prevents a randomized stack base address that causes
+		 *	child shared memory to be at a different address than
+		 *	the parent, making it impossible to attached to shared
+		 *	memory.  Return the value to '1' when finished.
+		 */
 		CreateSharedMemoryAndSemaphores(false, 0);
 
 		/* And run the backend */
-- 
GitLab