Added code comment: /* * 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);
--------------------------------------------------------------------------- Tom Lane wrote: > I just wasted a couple hours trying to determine why an EXEC_BACKEND > build would randomly fail on Fedora Core 4. It seems the reason is that > by default, recent Linux kernels randomize the stack base address --- > not by a lot, but enough to cause child processes to sometimes be unable > to attach to the shared memory segment at the same place the postmaster > did. > > You can work around this by doing (as root) > echo 0 >/proc/sys/kernel/randomize_va_space > before starting the postmaster. You'll probably want to set it back to > 1 when done experimenting with EXEC_BACKEND, since address randomization > is a useful security hack. > > Just seems like something that should be in our archives ... > > regards, tom lane > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Have you searched our list archives? > > http://archives.postgresql.org > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster