From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/13993 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general,gmane.comp.lib.gnulib.bugs Subject: Re: posix_spawn_file_actions_add* functions on musl libc Date: Sun, 24 Mar 2019 10:16:58 -0400 Message-ID: <20190324141658.GR23599@brightrain.aerifal.cx> References: <17480807.kbxdrRNLtY@omega> Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="202019"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mutt/1.5.21 (2010-09-15) Cc: bug-gnulib@gnu.org, musl@lists.openwall.com To: Bruno Haible Original-X-From: musl-return-14009-gllmg-musl=m.gmane.org@lists.openwall.com Sun Mar 24 15:17:21 2019 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.89) (envelope-from ) id 1h83w7-000qOx-1v for gllmg-musl@m.gmane.org; Sun, 24 Mar 2019 15:17:19 +0100 Original-Received: (qmail 30546 invoked by uid 550); 24 Mar 2019 14:17:16 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 30505 invoked from network); 24 Mar 2019 14:17:15 -0000 Content-Disposition: inline In-Reply-To: <17480807.kbxdrRNLtY@omega> Original-Sender: Rich Felker Xref: news.gmane.org gmane.linux.lib.musl.general:13993 gmane.comp.lib.gnulib.bugs:40229 Archived-At: On Sat, Mar 23, 2019 at 09:46:28PM +0100, Bruno Haible wrote: > The gnulib configure test in m4/posix_spawn.m4, when run on Alpine Linux 3.7, > determines that the posix_spawn_file_actions_add* functions do not fail as > expected for an out-of-range file descriptor. The POSIX "shall fail" requirement is for >=OPEN_MAX, which is not defined (variable limit). It's not clear to me whether it's supposed to apply if the fd number is >= the current dynamic limit reported by sysconf(_SC_OPEN_MAX), but it seems like doing so would be undesirable -- it would preclude advance creation of a file actions object which will open or dup onto high fd numbers at a later time after the rlimit has been increased. Rich > Let me document this in gnulib and update the cross-compilation guess > accordingly. > > Rich, FYI: These are the test programs: > > #include > int main () > { > posix_spawn_file_actions_t actions; > if (posix_spawn_file_actions_init (&actions) != 0) > return 1; > if (posix_spawn_file_actions_addclose (&actions, 10000000) == 0) > return 2; > return 0; > } > > #include > int main () > { > posix_spawn_file_actions_t actions; > if (posix_spawn_file_actions_init (&actions) != 0) > return 1; > if (posix_spawn_file_actions_adddup2 (&actions, 10000000, 2) == 0) > return 2; > return 0; > } > > #include > #include > int main () > { > posix_spawn_file_actions_t actions; > if (posix_spawn_file_actions_init (&actions) != 0) > return 1; > if (posix_spawn_file_actions_addopen (&actions, 10000000, "foo", 0, O_RDONLY) > == 0) > return 2; > return 0; > } > > > 2019-03-23 Bruno Haible > > posix_spawn_file_actions_*: Document musl libc bugs. > * doc/posix-functions/posix_spawn_file_actions_addclose.texi: Mention > the bug. > * doc/posix-functions/posix_spawn_file_actions_adddup2.texi: Likewise. > * doc/posix-functions/posix_spawn_file_actions_addopen.texi: Likewise. > * m4/posix_spawn.m4 (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE): When > cross-compiling to a musl system, guess no. > (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2): Likewise. > (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN): Likewise. > > diff --git a/doc/posix-functions/posix_spawn_file_actions_addclose.texi b/doc/posix-functions/posix_spawn_file_actions_addclose.texi > index 199daa1..80418db 100644 > --- a/doc/posix-functions/posix_spawn_file_actions_addclose.texi > +++ b/doc/posix-functions/posix_spawn_file_actions_addclose.texi > @@ -13,7 +13,7 @@ This function is missing on some platforms: > Mac OS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 14, Interix 3.5, BeOS, Android 8.1. > @item > This function does not reject a too large file descriptor on some platforms: > -Solaris 11.4. > +musl libc, Solaris 11.4. > @end itemize > > Portability problems not fixed by Gnulib: > diff --git a/doc/posix-functions/posix_spawn_file_actions_adddup2.texi b/doc/posix-functions/posix_spawn_file_actions_adddup2.texi > index e515715..985d6bc 100644 > --- a/doc/posix-functions/posix_spawn_file_actions_adddup2.texi > +++ b/doc/posix-functions/posix_spawn_file_actions_adddup2.texi > @@ -13,7 +13,7 @@ This function is missing on some platforms: > Mac OS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 14, Interix 3.5, BeOS, Android 8.1. > @item > This function does not reject a too large file descriptor on some platforms: > -Solaris 11.4. > +musl libc, Solaris 11.4. > @end itemize > > Portability problems not fixed by Gnulib: > diff --git a/doc/posix-functions/posix_spawn_file_actions_addopen.texi b/doc/posix-functions/posix_spawn_file_actions_addopen.texi > index a7809cf..eea56e3 100644 > --- a/doc/posix-functions/posix_spawn_file_actions_addopen.texi > +++ b/doc/posix-functions/posix_spawn_file_actions_addopen.texi > @@ -13,7 +13,7 @@ This function is missing on some platforms: > Mac OS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 14, Interix 3.5, BeOS, Android 8.1. > @item > This function does not reject a too large file descriptor on some platforms: > -Solaris 11.4. > +musl libc, Solaris 11.4. > @end itemize > > Portability problems not fixed by Gnulib: > diff --git a/m4/posix_spawn.m4 b/m4/posix_spawn.m4 > index 1e2533c..d50dcc9 100644 > --- a/m4/posix_spawn.m4 > +++ b/m4/posix_spawn.m4 > @@ -1,4 +1,4 @@ > -# posix_spawn.m4 serial 15 > +# posix_spawn.m4 serial 16 > dnl Copyright (C) 2008-2019 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > @@ -422,8 +422,8 @@ AC_DEFUN([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE], > if test $REPLACE_POSIX_SPAWN = 1; then > REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=1 > else > - dnl On Solaris 11.0, posix_spawn_file_actions_addclose succeeds even > - dnl if the fd argument is out of range. > + dnl On musl libc and Solaris 11.0, posix_spawn_file_actions_addclose > + dnl succeeds even if the fd argument is out of range. > AC_CACHE_CHECK([whether posix_spawn_file_actions_addclose works], > [gl_cv_func_posix_spawn_file_actions_addclose_works], > [AC_RUN_IFELSE( > @@ -440,8 +440,9 @@ int main () > }]])], > [gl_cv_func_posix_spawn_file_actions_addclose_works=yes], > [gl_cv_func_posix_spawn_file_actions_addclose_works=no], > - [# Guess no on Solaris, yes otherwise. > + [# Guess no on musl libc and Solaris, yes otherwise. > case "$host_os" in > + *-musl*) gl_cv_func_posix_spawn_file_actions_addclose_works="guessing no" ;; > solaris*) gl_cv_func_posix_spawn_file_actions_addclose_works="guessing no" ;; > # Guess no on native Windows. > mingw*) gl_cv_func_posix_spawn_file_actions_addclose_works="guessing no" ;; > @@ -465,8 +466,8 @@ AC_DEFUN([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2], > if test $REPLACE_POSIX_SPAWN = 1; then > REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=1 > else > - dnl On Solaris 11.0, posix_spawn_file_actions_adddup2 succeeds even > - dnl if the fd argument is out of range. > + dnl On musl libc and Solaris 11.0, posix_spawn_file_actions_adddup2 > + dnl succeeds even if the fd argument is out of range. > AC_CACHE_CHECK([whether posix_spawn_file_actions_adddup2 works], > [gl_cv_func_posix_spawn_file_actions_adddup2_works], > [AC_RUN_IFELSE( > @@ -483,8 +484,9 @@ int main () > }]])], > [gl_cv_func_posix_spawn_file_actions_adddup2_works=yes], > [gl_cv_func_posix_spawn_file_actions_adddup2_works=no], > - [# Guess no on Solaris, yes otherwise. > + [# Guess no on musl libc and Solaris, yes otherwise. > case "$host_os" in > + *-musl*) gl_cv_func_posix_spawn_file_actions_adddup2_works="guessing no";; > solaris*) gl_cv_func_posix_spawn_file_actions_adddup2_works="guessing no";; > # Guess no on native Windows. > mingw*) gl_cv_func_posix_spawn_file_actions_adddup2_works="guessing no" ;; > @@ -508,8 +510,8 @@ AC_DEFUN([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN], > if test $REPLACE_POSIX_SPAWN = 1; then > REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=1 > else > - dnl On Solaris 11.0, posix_spawn_file_actions_addopen succeeds even > - dnl if the fd argument is out of range. > + dnl On musl libc and Solaris 11.0, posix_spawn_file_actions_addopen > + dnl succeeds even if the fd argument is out of range. > AC_CACHE_CHECK([whether posix_spawn_file_actions_addopen works], > [gl_cv_func_posix_spawn_file_actions_addopen_works], > [AC_RUN_IFELSE( > @@ -528,8 +530,9 @@ int main () > }]])], > [gl_cv_func_posix_spawn_file_actions_addopen_works=yes], > [gl_cv_func_posix_spawn_file_actions_addopen_works=no], > - [# Guess no on Solaris, yes otherwise. > + [# Guess no on musl libc and Solaris, yes otherwise. > case "$host_os" in > + *-musl*) gl_cv_func_posix_spawn_file_actions_addopen_works="guessing no";; > solaris*) gl_cv_func_posix_spawn_file_actions_addopen_works="guessing no";; > # Guess no on native Windows. > mingw*) gl_cv_func_posix_spawn_file_actions_addopen_works="guessing no" ;;