diff options
author | Eli Zaretskii <[email protected]> | 2012-11-24 08:24:13 +0200 |
---|---|---|
committer | Eli Zaretskii <[email protected]> | 2012-11-24 08:24:13 +0200 |
commit | 259719a65db5d0aa315d6f942f333494b88619a2 (patch) | |
tree | f1e2990a2563114e3771ccaca3162fe6f49ae278 | |
parent | 6d4e8f62e93b575a1da2cd2b4abeb9dce56e1e52 (diff) |
Fix ChangeLog entries for the last commit.
-rw-r--r-- | nt/ChangeLog | 4 | ||||
-rw-r--r-- | src/ChangeLog | 40 |
2 files changed, 18 insertions, 26 deletions
diff --git a/nt/ChangeLog b/nt/ChangeLog index b4537de0d4..63c8ba8b70 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,10 +1,8 @@ -2012-11-23 Paul Eggert <[email protected]> +2012-11-23 Eli Zaretskii <[email protected]> Fix a race condition with glib (Bug#8855). This is a backport from the trunk, consisting of: - 2012-11-17 Eli Zaretskii <[email protected]> - * inc/sys/wait.h: New file, with prototype of waitpid and definitions of macros it needs. * inc/ms-w32.h (wait): Don't define, 'wait' is not used anymore. diff --git a/src/ChangeLog b/src/ChangeLog index 655eb1595c..8ca913b75f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,9 +1,18 @@ 2012-11-23 Paul Eggert <[email protected]> + Eli Zaretskii <[email protected]> Fix a race condition with glib (Bug#8855). - This is a backport from the trunk, consisting of: + The symptom is a diagnostic "GLib-WARNING **: In call to + g_spawn_sync(), exit status of a child process was requested but + SIGCHLD action was set to SIG_IGN and ECHILD was received by + waitpid(), so exit status can't be returned." The diagnostic + is partly wrong, as the SIGCHLD action is not set to SIG_IGN. + The real bug is a race condition between Emacs and glib: Emacs + does a waitpid (-1, ...) and reaps glib's subprocess by mistake, + so that glib can't find it. Work around the bug by invoking + waitpid only on subprocesses that Emacs itself creates. - 2012-11-17 Eli Zaretskii <[email protected]> + This is a backport from the trunk, consisting of: * w32proc.c (create_child): Don't clip the PID of the child process to fit into an Emacs integer, as this is no longer a @@ -20,26 +29,10 @@ * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions, no longer needed. - (record_child_status_change): Remove the setting of - record_at_most_one_child for the !WNOHANG case. - - 2012-11-03 Paul Eggert <[email protected]> - - Fix a race condition that causes Emacs to mess up glib (Bug#8855). - This is a backport from the trunk. - The symptom is a diagnostic "GLib-WARNING **: In call to - g_spawn_sync(), exit status of a child process was requested but - SIGCHLD action was set to SIG_IGN and ECHILD was received by - waitpid(), so exit status can't be returned." The diagnostic - is partly wrong, as the SIGCHLD action is not set to SIG_IGN. - The real bug is a race condition between Emacs and glib: Emacs - does a waitpid (-1, ...) and reaps glib's subprocess by mistake, - so that glib can't find it. Work around the bug by invoking - waitpid only on subprocesses that Emacs itself creates. - * process.c (create_process, record_child_status_change): - Don't use special value -1 in pid field, as the caller now must - know the pid rather than having the callee infer it. The - inference was sometimes incorrect anyway, due to another race. + (create_process, record_child_status_change): Don't use special + value -1 in pid field, as the caller now must know the pid rather + than having the callee infer it. The inference was sometimes + incorrect anyway, due to another race. (create_process): Set new 'alive' member if child is created. (process_status_retrieved): New function. (record_child_status_change): Use it. @@ -47,7 +40,8 @@ processes that Emacs already knows about. Move special-case code for DOS_NT (which lacks WNOHANG) here, from caller. Keep track of processes that have already been waited for, by testing and - clearing new 'alive' member. + clearing new 'alive' member. Remove the setting of + record_at_most_one_child for the !WNOHANG case. (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change now does this internally. (handle_child_signal): Let record_child_status_change do all |