windows shared memory error - Mailing list pgsql-hackers

From Andrew Dunstan
Subject windows shared memory error
Date
Msg-id 49FA3B6F.6080906@dunslane.net
Whole thread Raw
Responses Re: windows shared memory error  (Dave Page <dpage@pgadmin.org>)
Re: windows shared memory error  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: windows shared memory error  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
I am seeing Postgres 8.3.7 running as a service on Windows Server 2003 
repeatedly fail to restart after a backend crash because of the 
following code in port/win32_shmem.c:

   /*    * If the segment already existed, CreateFileMapping() will return a    * handle to the existing one.    */
if(GetLastError() == ERROR_ALREADY_EXISTS)   {       /*        * When recycling a shared memory segment, it may take a
shortwhile        * before it gets dropped from the global namespace. So re-try after        * sleeping for a second.
    */       CloseHandle(hmap);      /* Close the old handle, since we got a 
 
valid                                * one to the previous segment. */
       Sleep(1000);
       hmap = CreateFileMapping((HANDLE) 0xFFFFFFFF, NULL, 
PAGE_READWRITE, 0L, (DWORD) size, szShareMem);       if (!hmap)           ereport(FATAL,
(errmsg("couldnot create shared memory segment: 
 
%lu", GetLastError()),                    errdetail("Failed system call was 
CreateFileMapping(size=%lu, name=%s).",                              (unsigned long) size, szShareMem)));
       if (GetLastError() == ERROR_ALREADY_EXISTS)           ereport(FATAL,                (errmsg("pre-existing shared
memoryblock is still in 
 
use"),                 errhint("Check if there are any old server processes 
still running, and terminate them.")));   }


It strikes me that we really need to try reconnecting to the shared 
memory here several times, and maybe the backoff need to increase each 
time. On a loaded server this cause postgres to fail to restart fairly 
reliably.

thoughts?

cheers

andrew




pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Creating a tablespace directory in recovery
Next
From: Andrew Dunstan
Date:
Subject: Re: Keyword list sanity check