Re: [PATCH] Cygwin: Fix error return for madvise()
Mark Geisert <[email protected]> Tue, 7 Jul 2026 00:58:48 -0700
| Newsgroups | gmane.os.cygwin.patches |
|---|---|
| Message-ID | <[email protected]> |
Hi Takashi, On 7/6/2026 5:45 PM, Takashi Yano wrote: > Hi Mark, > > On Mon, 6 Jul 2026 16:47:43 -0700 > Mark Geisert wrote: >> Currently madvise() and posix_madvise() are wired together as one >> function: the latter. But their error returns should be different. >> Make madvise a first-class export in cygwin.din; code a new madvise() >> that calls posix_madvise() and massages any error return. >> >> Reported-by: Christian Franke <[email protected]> >> Addresses: https://cygwin.com/pipermail/cygwin/2026-July/259872.html >> Signed-off-by: Mark Geisert <[email protected]> >> Fixes: 61522196c715 (* Merge in cygwin-64bit-branch.) >> >> --- >> winsup/cygwin/cygwin.din | 2 +- >> winsup/cygwin/include/cygwin/version.h | 3 ++- >> winsup/cygwin/mm/mmap.cc | 12 ++++++++++++ >> 3 files changed, 15 insertions(+), 2 deletions(-) >> >> diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din >> index 2e53bc819..937eacdaf 100644 >> --- a/winsup/cygwin/cygwin.din >> +++ b/winsup/cygwin/cygwin.din >> @@ -951,7 +951,7 @@ lseek SIGFE >> lsetxattr SIGFE >> lstat SIGFE >> lutimes SIGFE >> -madvise = posix_madvise SIGFE >> +madvise SIGFE >> makecontext NOSIGFE >> mallinfo SIGFE >> malloc SIGFE >> diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h >> index 71ac5282b..fc838e23e 100644 >> --- a/winsup/cygwin/include/cygwin/version.h >> +++ b/winsup/cygwin/include/cygwin/version.h >> @@ -502,12 +502,13 @@ details. */ >> 360: Add RLIMIT_NPROC. >> 361: Export _Fork. >> 362: Export C23 stdbit functions. >> + 363: Export madvise separately from posix_madvise. >> >> Note that we forgot to bump the api for ualarm, strtoll, strtoull, >> sigaltstack, sethostname. */ >> >> #define CYGWIN_VERSION_API_MAJOR 0 >> -#define CYGWIN_VERSION_API_MINOR 362 >> +#define CYGWIN_VERSION_API_MINOR 363 >> >> /* There is also a compatibity version number associated with the shared memory >> regions. It is incremented when incompatible changes are made to the shared > > I don't think we should change CYGWIN_VERSION_API_MINOR value > because the API itself is not changed. This patch fixes a bug > in madvice() implementation. I went back and forth internally on whether the minor version should be bumped. One point was whether divorcing madvise() from posix_madvise() in cygwin.din warranted an API bump: without a bump won't existing programs be unable to access the new error return behavior? Another point was that the error return behavior of madvise() is being changed; isn't that behavior part of the API? I agree this is a bug fix but such fixes could cause API changes. This is a case where I'd like to get input from other folks who might've made similar changes to Cygwin over its long history. I am totally OK with removing the API bump in a v2 patch if that's the consensus opinion. Thank you for the review! ..mark