Re: Unfortunate interaction of glibc-2.44 and gnulib regarding posix_spawn_file_actions_addchdir => infinite recursion
Collin Funk <[email protected]> Sat, 25 Jul 2026 12:15:59 -0700
| Newsgroups | gmane.comp.lib.gnulib.bugs,gmane.comp.lib.glibc.alpha |
|---|---|
| Message-ID | <[email protected]> |
Xi Ruoyao <[email protected]> writes: > It can be worked around with > ac_cv_func_posix_spawn_file_actions_addchdir=yes (which basically tells > the configure system we have a posix_spawn_file_actions_addchdir, some > kind of a "fact" with glibc 2.44). > > Thoughts on fix this? Does the attached patch work? In a container, it looks like the symbols are defined correctly, but I haven't tested it more than that yet: $ nm -g --defined-only gllib/libgnu.a | grep spawn_file_actions_add 0000000000000000 T rpl_posix_spawn_file_actions_addchdir 0000000000000000 T rpl_posix_spawn_file_actions_addfchdir Note that I also haven't pushed it yet, since I suspect we will want to update the outdated commentary to reflect the fact that this is now standardized. And also consider not compiling these files unconditionally. Collin
0001-posix_spawn_faction_add-chdir-fchdir-Fix-checks-on-g.patch
(text/x-patch, 3.9 KB)
From b0b3d5d5518985fad0878ba1a3f63bfcef25f791 Mon Sep 17 00:00:00 2001 Message-ID: <b0b3d5d5518985fad0878ba1a3f63bfcef25f791.1785006655.git.collin.funk1@gmail.com> From: Collin Funk <[email protected]> Date: Sat, 25 Jul 2026 12:09:28 -0700 Subject: [PATCH] posix_spawn_faction_add{chdir,fchdir}: Fix checks on glibc-2.44. Reported by Xi Ruoyao <[email protected]>: <https://lists.gnu.org/archive/html/bug-gnulib/2026-07/msg00164.html> * m4/posix_spawn_faction_addchdir.m4 (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR): Use AC_CHECK_DECLS instead of AC_CHECK_FUNCS_ONCE. * m4/posix_spawn_faction_addfchdir.m4 (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR): Use AC_CHECK_DECLS instead of AC_CHECK_FUNCS_ONCE. --- ChangeLog | 12 ++++++++++++ m4/posix_spawn_faction_addchdir.m4 | 7 ++++--- m4/posix_spawn_faction_addfchdir.m4 | 7 ++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 97ce480fd9..eb96f263a4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2026-07-25 Collin Funk <[email protected]> + + posix_spawn_faction_add{chdir,fchdir}: Fix checks on glibc-2.44. + Reported by Xi Ruoyao <[email protected]>: + <https://lists.gnu.org/archive/html/bug-gnulib/2026-07/msg00164.html> + * m4/posix_spawn_faction_addchdir.m4 + (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR): Use AC_CHECK_DECLS instead + of AC_CHECK_FUNCS_ONCE. + * m4/posix_spawn_faction_addfchdir.m4 + (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR): Use AC_CHECK_DECLS instead + of AC_CHECK_FUNCS_ONCE. + 2026-07-25 Paul Eggert <[email protected]> gettext-h: conform to C on Solaris diff --git a/m4/posix_spawn_faction_addchdir.m4 b/m4/posix_spawn_faction_addchdir.m4 index 779e3813a7..56e33d1a51 100644 --- a/m4/posix_spawn_faction_addchdir.m4 +++ b/m4/posix_spawn_faction_addchdir.m4 @@ -1,5 +1,5 @@ # posix_spawn_faction_addchdir.m4 -# serial 2 +# serial 3 dnl Copyright (C) 2018-2026 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -11,10 +11,11 @@ AC_DEFUN([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR] AC_REQUIRE([gl_SPAWN_H_DEFAULTS]) AC_REQUIRE([AC_PROG_CC]) gl_POSIX_SPAWN - AC_CHECK_FUNCS_ONCE([posix_spawn_file_actions_addchdir]) + AC_CHECK_DECLS([posix_spawn_file_actions_addchdir],,, + [[#include <spawn.h>]]) gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addchdir_np], [[#include <spawn.h>]]) - if test $ac_cv_func_posix_spawn_file_actions_addchdir = yes; then + if test $ac_cv_have_decl_posix_spawn_file_actions_addchdir = yes; then dnl This function is not yet standardized. Therefore override the dnl system's implementation always. REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR=1 diff --git a/m4/posix_spawn_faction_addfchdir.m4 b/m4/posix_spawn_faction_addfchdir.m4 index e78ea11a88..e8ea9b08b1 100644 --- a/m4/posix_spawn_faction_addfchdir.m4 +++ b/m4/posix_spawn_faction_addfchdir.m4 @@ -1,5 +1,5 @@ # posix_spawn_faction_addfchdir.m4 -# serial 2 +# serial 3 dnl Copyright (C) 2018-2026 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -11,10 +11,11 @@ AC_DEFUN([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR] AC_REQUIRE([gl_SPAWN_H_DEFAULTS]) AC_REQUIRE([AC_PROG_CC]) gl_POSIX_SPAWN - AC_CHECK_FUNCS_ONCE([posix_spawn_file_actions_addfchdir]) + AC_CHECK_DECLS([posix_spawn_file_actions_addfchdir],,, + [[#include <spawn.h>]]) gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addfchdir_np], [[#include <spawn.h>]]) - if test $ac_cv_func_posix_spawn_file_actions_addfchdir = yes; then + if test $ac_cv_have_decl_posix_spawn_file_actions_addfchdir = yes; then dnl This function is not yet standardized. Therefore override the dnl system's implementation always. REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR=1 -- 2.55.0