test: fix test runner getenv async-signal-safety
getenv() and atoi() are not safe to call between fork() and execve() so call them before forking. PR-URL: https://github.com/libuv/libuv/pull/2056 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
This commit is contained in:
parent
b901e2620c
commit
c3cbab991b
@ -67,25 +67,6 @@ int process_start(char* name, char* part, process_info_t* p, int is_helper) {
|
|||||||
int n;
|
int n;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
stdout_file = tmpfile();
|
|
||||||
stdout_fd = fileno(stdout_file);
|
|
||||||
if (!stdout_file) {
|
|
||||||
perror("tmpfile");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
p->terminated = 0;
|
|
||||||
p->status = 0;
|
|
||||||
|
|
||||||
pid = fork();
|
|
||||||
|
|
||||||
if (pid < 0) {
|
|
||||||
perror("fork");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pid == 0) {
|
|
||||||
/* child */
|
|
||||||
arg = getenv("UV_USE_VALGRIND");
|
arg = getenv("UV_USE_VALGRIND");
|
||||||
n = 0;
|
n = 0;
|
||||||
|
|
||||||
@ -105,6 +86,25 @@ int process_start(char* name, char* part, process_info_t* p, int is_helper) {
|
|||||||
args[n++] = part;
|
args[n++] = part;
|
||||||
args[n++] = NULL;
|
args[n++] = NULL;
|
||||||
|
|
||||||
|
stdout_file = tmpfile();
|
||||||
|
stdout_fd = fileno(stdout_file);
|
||||||
|
if (!stdout_file) {
|
||||||
|
perror("tmpfile");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->terminated = 0;
|
||||||
|
p->status = 0;
|
||||||
|
|
||||||
|
pid = fork();
|
||||||
|
|
||||||
|
if (pid < 0) {
|
||||||
|
perror("fork");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pid == 0) {
|
||||||
|
/* child */
|
||||||
dup2(stdout_fd, STDOUT_FILENO);
|
dup2(stdout_fd, STDOUT_FILENO);
|
||||||
dup2(stdout_fd, STDERR_FILENO);
|
dup2(stdout_fd, STDERR_FILENO);
|
||||||
execvp(args[0], args);
|
execvp(args[0], args);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user