]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix failure to restart Postgres when Linux kernel returns EIDRM for shmctl().
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 2 Jul 2007 20:12:00 +0000 (20:12 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 2 Jul 2007 20:12:00 +0000 (20:12 +0000)
commit4ece8fd17e8fbec5e9832f0326c244a25b666e0b
tree36707f168646474dac9de41660f77d79621be5e5
parentb60765944d60abab22a9f15e63671efecb9748f2
Fix failure to restart Postgres when Linux kernel returns EIDRM for shmctl().

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.
src/backend/port/sysv_shmem.c
src/include/port/linux.h