• Tom Lane's avatar
    Fix failure to restart Postgres when Linux kernel returns EIDRM for shmctl(). · 1c7fe33f
    Tom Lane authored
    This is a Linux kernel bug that apparently exists in every extant kernel
    version: sometimes shmctl() will fail with EIDRM when EINVAL is correct.
    We were assuming that EIDRM indicates a possible conflict with pre-existing
    backends, and refusing to start the postmaster when this happens.  Fortunately,
    there does not seem to be any case where Linux can legitimately return EIDRM
    (it doesn't track shmem segments in a way that would allow that), so we can
    get away with just assuming that EIDRM means EINVAL on this platform.
    
    Per reports from Michael Fuhr and Jon Lapham --- it's a bit surprising
    we have not seen more reports, actually.
    1c7fe33f
sysv_shmem.c 15.3 KB