|
From: | Torrekie |
Subject: | bug#64216: *spawn calls fixed in latest commit |
Date: | Sun, 13 Aug 2023 05:34:51 +0800 |
By inspecting commit ccd7400fdbebca73fc4340ad4ca0248655009f04, I see this issue has been fixed for BSD posix_spawn and internal `__spawni`. diff --git a/libguile/posix.c b/libguile/posix.c index 3adc743c4..6776a7744 100644 --- a/libguile/posix.c +++ b/libguile/posix.c @@ -1390,12 +1390,19 @@ do_spawn (char *exec_file, char **exec_argv, char **exec_env, /* Move the fds out of the way, so that duplicate fds or fds equal to 0, 1, 2 don't trample each other */ - posix_spawn_file_actions_adddup2 (&actions, in, fd_slot[0]); - posix_spawn_file_actions_adddup2 (&actions, out, fd_slot[1]); - posix_spawn_file_actions_adddup2 (&actions, err, fd_slot[2]); - posix_spawn_file_actions_adddup2 (&actions, fd_slot[0], 0); - posix_spawn_file_actions_adddup2 (&actions, fd_slot[1], 1); - posix_spawn_file_actions_adddup2 (&actions, fd_slot[2], 2); + int dup2_action_from[] = {in, out, err, + fd_slot[0], fd_slot[1], fd_slot[2]}; + int dup2_action_to [] = {fd_slot[0], fd_slot[1], fd_slot[2], + 0, 1, 2}; + + errno = 0; + for (int i = 0; i < sizeof (dup2_action_from) / sizeof (int); i++) + { + errno = posix_spawn_file_actions_adddup2 (&actions, dup2_action_from[i], + dup2_action_to[i]); + if (errno != 0) + return -1; + } #ifdef HAVE_ADDCLOSEFROM /* This function appears in glibc 2.34. It's both free from race Can confirm FreeBSD's patch (https://github.com/freebsd/freebsd-ports/raw/6e9b9fd9dd69cbbfabd780e2cec9e2b98d5aef1e/lang/guile3/files/extra-patch-upstream-fixes.patch) that based on latest commits fixed the problem on Darwin iPad:/buildroot/guile-3.0.9 root# guile-config link -lguile-3.0 -lgc -lpthread iPad:/buildroot/guile-3.0.9 root# guile-config compile -D_THREAD_SAFE -I/usr/include/guile/3.0 -I/usr iPad:/buildroot/guile-3.0.9 root# /usr/bin/uname -a Darwin iPad 20.4.0 Darwin Kernel Version 20.4.0: Sun Feb 28 21:05:09 PST 2021; root:xnu-7195.100.367~3/RELEASE_ARM64_T8101 arm64 iPad:/buildroot/guile-3.0.9 root# sw_vers ProductName: iPhone OS ProductVersion: 14.5.1 BuildVersion: 18E212 |
[Prev in Thread] | Current Thread | [Next in Thread] |