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

Reply via email to