diff options
author | Thomas Munro <tmunro@postgresql.org> | 2023-01-06 10:09:02 +1300 |
---|---|---|
committer | Thomas Munro <tmunro@postgresql.org> | 2023-01-06 10:33:28 +1300 |
commit | f2857af485a00ab5dbfa2c83af9d83afe4378239 (patch) | |
tree | 33e01fe3398dc6434d4e427675ec06e930b2e971 | |
parent | 39cffe95f2c5d77a268db9f04c2b2aaf2294ad76 (diff) | |
download | postgresql-f2857af485a00ab5dbfa2c83af9d83afe4378239.tar.gz |
Use unnamed POSIX semaphores on Cygwin.
Testing on CI showed that Cygwin's semctl() can fail with EAGAIN
(possibly due to resource limits in cygserver that could be tuned, not
examined). Switch to so-called POSIX semaphores instead, which don't
seem to fail in that way (possibly due to a more direct implementation
using Windows semaphore primitives instead of talking to cygserver,
based on a cursory glance at the source).
Other known problems still prevent PostgreSQL from running on Cygwin
without random crashes, but this rarer problem was noticed while
testing.
Discussion: https://postgr.es/m/CA%2BhUKG%2BQ6DU4Ov9LrvUyDcF3oHS4KMRVSKmVGaeePq-kOyG9gA%40mail.gmail.com
-rw-r--r-- | meson.build | 1 | ||||
-rw-r--r-- | src/template/cygwin | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/meson.build b/meson.build index 8999170b4d..45fb9dd616 100644 --- a/meson.build +++ b/meson.build @@ -211,6 +211,7 @@ if host_system == 'aix' memset_loop_limit = 0 elif host_system == 'cygwin' + sema_kind = 'unnamed_posix' cppflags += '-D_GNU_SOURCE' dlsuffix = '.dll' mod_link_args_fmt = ['@0@'] diff --git a/src/template/cygwin b/src/template/cygwin index 3f42e2f8b6..4a03707a85 100644 --- a/src/template/cygwin +++ b/src/template/cygwin @@ -1,5 +1,10 @@ # src/template/cygwin +# Prefer unnamed POSIX semaphores if available, unless user overrides choice +if test x"$PREFERRED_SEMAPHORES" = x"" ; then + PREFERRED_SEMAPHORES=UNNAMED_POSIX +fi + SRCH_LIB="/usr/local/lib" # This is required for ppoll(2), and perhaps other things |