Thread: pgsql: Avoid "could not reattach" by providing space for concurrentall
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 ------ REL9_5_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/7a5677818556a2d3ab02a536c01955e90ddc1ea9 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(-)