• Noah Misch's avatar
    Avoid "could not reattach" by providing space for concurrent allocation. · 617dc6d2
    Noah Misch authored
    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 bcbf2346.
    
    Discussion: https://postgr.es/m/20190402135442.GA1173872@rfd.leadboat.com
    617dc6d2
win32_shmem.c 18.6 KB