[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 4.3.90 release candidate segfaults on linux and solaris
From: |
Dmitry Goncharov |
Subject: |
Re: 4.3.90 release candidate segfaults on linux and solaris |
Date: |
Sun, 25 Sep 2022 10:25:35 -0400 |
On Sun, Sep 25, 2022 at 2:09 AM Martin Dorey
<Martin.Dorey@hitachivantara.com> wrote:
> And vfork is where that happens. If I’ve followed the thicket of #ifdef
> correctly and understood the vfork man page, then this is illegal when using
> vfork:
>
> https://github.com/mirror/make/blob/master/src/job.c#L2556
Thanks, Martin.
This is indeed the culprit.
I was able to find a linux where this reproduces. However, the this
does this reproduce on my sun. Denis, can you please try this patch on
your sun?
regards, Dmitry
Here is a patch
index d12a9138..1ed71f0a 100644
--- a/src/job.c
+++ b/src/job.c
@@ -2286,6 +2286,8 @@ child_execute_job (struct childbase *child, int
good_stdin, char **argv)
posix_spawnattr_t attr;
posix_spawn_file_actions_t fa;
short flags = 0;
+#else
+ char **parent_environ = environ;
#endif
/* Divert child output if we want to capture it. */
@@ -2301,7 +2303,12 @@ child_execute_job (struct childbase *child, int
good_stdin, char **argv)
pid = vfork();
if (pid != 0)
+ {
+ /* The child sets environ to child->environment before calling execvp.
+ * Restore it here. */
+ environ = parent_environ;
return pid;
+ }
/* We are the child. */
unblock_all_sigs ();
@@ -2552,7 +2559,8 @@ exec_command (char **argv, char **envp)
errno = ENOEXEC;
# else
- /* Run the program. */
+ /* Run the program.
+ * The parent has to restore environ. */
environ = envp;
execvp (argv[0], argv);
- 4.3.90 release candidate segfaults on linux and solaris, Denis Excoffier, 2022/09/24
- Re: 4.3.90 release candidate segfaults on linux and solaris, Paul Smith, 2022/09/24
- Re: 4.3.90 release candidate segfaults on linux and solaris, Denis Excoffier, 2022/09/24
- Re: 4.3.90 release candidate segfaults on linux and solaris, Paul Smith, 2022/09/24
- Re: 4.3.90 release candidate segfaults on linux and solaris, Paul Smith, 2022/09/24
- Re: 4.3.90 release candidate segfaults on linux and solaris, Martin Dorey, 2022/09/25
- Re: 4.3.90 release candidate segfaults on linux and solaris, Paul Smith, 2022/09/25
- Re: 4.3.90 release candidate segfaults on linux and solaris, Martin Dorey, 2022/09/25
- Re: 4.3.90 release candidate segfaults on linux and solaris, Martin Dorey, 2022/09/25
- Re: 4.3.90 release candidate segfaults on linux and solaris,
Dmitry Goncharov <=
- Re: 4.3.90 release candidate segfaults on linux and solaris, Paul Smith, 2022/09/25
- Re: 4.3.90 release candidate segfaults on linux and solaris, Paul Smith, 2022/09/25
- Re: 4.3.90 release candidate segfaults on linux and solaris, Denis Excoffier, 2022/09/26