pgsql: Avoid "could not reattach" by providing space for concurrent all

From: Noah Misch <noah(at)leadboat(dot)com>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Avoid "could not reattach" by providing space for concurrent all
Date: 2019-04-09 04:44:23
Message-ID: E1hDicR-0000pI-CK@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Avoid "could not reattach" by providing space for concurrent allocation.

We've long had reports of intermittent "could not reattach to shared
memory" errors on Windows. Buildfarm member dory fails that way when
PGSharedMemoryReAttach() execution overlaps with creation of a thread
for the process's "default thread pool". Fix that by providing a second
region to receive asynchronous allocations that would otherwise intrude
into UsedShmemSegAddr. In pgwin32_ReserveSharedMemoryRegion(), stop
trying to free reservations landing at incorrect addresses; the caller's
next step has been to terminate the affected process. Back-patch to 9.4
(all supported versions).

Reviewed by Tom Lane. He also did much of the prerequisite research;
see commit bcbf2346d69f6006f126044864dd9383d50d87b4.

Discussion: https://postgr.es/m/20190402135442.GA1173872@rfd.leadboat.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/617dc6d299c957e2784320382b3277ede01d9c63

Modified Files
--------------
src/backend/port/win32_shmem.c | 92 +++++++++++++++++++++++++++++++------
src/backend/postmaster/postmaster.c | 7 +++
src/include/storage/pg_shmem.h | 1 +
3 files changed, 86 insertions(+), 14 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Heikki Linnakangas 2019-04-09 05:34:28 pgsql: Fix example in comment.
Previous Message Andres Freund 2019-04-08 23:24:50 pgsql: tableam: comment and formatting fixes.