summaryrefslogtreecommitdiff
path: root/src/lisp.h
diff options
context:
space:
mode:
authorPhilipp Stephani <phst@google.com>2021-01-09 21:17:42 +0100
committerPhilipp Stephani <phst@google.com>2021-01-09 21:26:52 +0100
commit4cebd2ded01f733957919cea9d10a67101cb7a67 (patch)
tree03d6987b9a16f111409d2cda87d4fb413ad350ca /src/lisp.h
parentace749f2e3be5b23cf4cd29c702a0e82d4d871c3 (diff)
downloademacs-4cebd2ded01f733957919cea9d10a67101cb7a67.tar.gz
emacs-4cebd2ded01f733957919cea9d10a67101cb7a67.tar.bz2
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.h4
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);
# define CHILD_SETUP_ERROR_DESC "Doing vfork"
#endif
-extern int emacs_spawn (pid_t *, int, int, int, char **, char **, const char *,
- const char *);
+extern int emacs_spawn (pid_t *, int, int, int, char **, char **,
+ const char *, const char *, const sigset_t *);
extern char **make_environment_block (Lisp_Object);
extern void init_callproc_1 (void);
extern void init_callproc (void);