Hello,My customer reported the following problem on Windows. I'm afraid this is a serious problem, and I think we should provide a fix in the next minor release. I've attached a fix, and I would wish it to be back-ported.
[Problem]The customer is using 64-bit PostgreSQL 9.1.x on Windows Server 2012 R2. He found the following messages output repeatedly (once per about 3 minutes) in the event log.
LOG: could not reserve shared memory region (addr=0000000001270000) for child 0000000000001340: 487 LOG: could not fork autovacuum worker process: A blocking operation was interrupted by a call to WSACancelBlockingCall.
I found the same problem was reported by another user here: Re: PG 924, Windows 2012, error code 487 http://www.postgresql.org/message-id/2c0926abd16bb641a8e2f11a549200425471425...@phxccrprd01.adprod.bmc.comIn my customer's case, the failed process was autovacuum worker, so there was no visible impact on their applications. However, as the above mail suggests, this can happen with any backend process.
[Cause]This is caused by the improved ASLR (Address Space Layout Randomization) in Windows 8/2012. That is analyzed in the following mail last year, but the problem was not addressed:
windows 8 RTM compatibility issue (could not reserve shared memory region for child)
http://www.postgresql.org/message-id/5046caeb.4010...@grammatech.com [Fix]Disable ASLR when building PostgreSQL modules. This eliminated the log output in my customer's environment.
I'll add this to the CommitFest if necessary. Regards MauMau
disable_ASLR.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers