diff options
| author | Philipp Stephani | 2021-01-09 21:17:42 +0100 |
|---|---|---|
| committer | Philipp Stephani | 2021-01-09 21:26:52 +0100 |
| commit | 4cebd2ded01f733957919cea9d10a67101cb7a67 (patch) | |
| tree | 03d6987b9a16f111409d2cda87d4fb413ad350ca /src/lisp.h | |
| parent | ace749f2e3be5b23cf4cd29c702a0e82d4d871c3 (diff) | |
| download | emacs-4cebd2ded01f733957919cea9d10a67101cb7a67.tar.gz emacs-4cebd2ded01f733957919cea9d10a67101cb7a67.zip | |
Don't unblock SIGCHLD too early.
We first need to register the received process ID so that
'handle_child_signal' checks it. Otherwise we might never call
'waitpid' for these processes, risking deadlock.
* src/callproc.c (call_process):
* src/process.c (create_process): Don't unblock SIGCHLD before
registering the process ID to wait for.
* src/callproc.c (emacs_spawn): Accept a signal set from the caller.
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lisp.h b/src/lisp.h index ca0eb51c061..d139df93424 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -4495,8 +4495,8 @@ extern void setup_process_coding_systems (Lisp_Object); | |||
| 4495 | # define CHILD_SETUP_ERROR_DESC "Doing vfork" | 4495 | # define CHILD_SETUP_ERROR_DESC "Doing vfork" |
| 4496 | #endif | 4496 | #endif |
| 4497 | 4497 | ||
| 4498 | extern int emacs_spawn (pid_t *, int, int, int, char **, char **, const char *, | 4498 | extern int emacs_spawn (pid_t *, int, int, int, char **, char **, |
| 4499 | const char *); | 4499 | const char *, const char *, const sigset_t *); |
| 4500 | extern char **make_environment_block (Lisp_Object); | 4500 | extern char **make_environment_block (Lisp_Object); |
| 4501 | extern void init_callproc_1 (void); | 4501 | extern void init_callproc_1 (void); |
| 4502 | extern void init_callproc (void); | 4502 | extern void init_callproc (void); |