Follow-up Comment #9, bug #63070 (project make): Sorry Dmitry I'm still really confused. Maybe it would help if you made more clear what you discovered.
GNU make always sets POSIX_SPAWN_USEVFORK if it exists, and it does exist in all versions of glibc we are discussing. You have discovered that in glibc 2.17, posix_spawn() has a bug in its behavior, with POSIX_SPAWN_USEVFORK set (since we've determined it is set everywhere). In glibc >=2.24, posix_spawn() does not have this bug with POSIX_SPAWN_USEVFORK set (and, presumably, without it set either although I didn't check this). The question is, does posix_spawn() in glibc <2.24 (e.g., 2.17) and WITHOUT POSIX_SPAWN_USEVFORK set also show this bug, or does it work properly without vfork? If older glibc works if you don't set POSIX_SPAWN_USEVFORK, then I suggest that the thing to do is to detect whether this old version of glibc is being used and if it is, then we don't use POSIX_SPAWN_USEVFORK regardless of whether it exists or not, and just use normal posix_spawn(). If older glibc doesn't work even if you do use POSIX_SPAWN_USEVFORK, then I'm not sure why we're even testing for this since it doesn't seem to make any difference either way. Am I missing something? _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?63070> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/