diff options
| author | Eli Zaretskii | 2012-11-24 08:24:13 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2012-11-24 08:24:13 +0200 |
| commit | 259719a65db5d0aa315d6f942f333494b88619a2 (patch) | |
| tree | f1e2990a2563114e3771ccaca3162fe6f49ae278 /src | |
| parent | 6d4e8f62e93b575a1da2cd2b4abeb9dce56e1e52 (diff) | |
| download | emacs-259719a65db5d0aa315d6f942f333494b88619a2.tar.gz emacs-259719a65db5d0aa315d6f942f333494b88619a2.zip | |
Fix ChangeLog entries for the last commit.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 40 |
1 files changed, 17 insertions, 23 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 655eb1595c0..8ca913b75fc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,9 +1,18 @@ | |||
| 1 | 2012-11-23 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2012-11-23 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | Eli Zaretskii <eliz@gnu.org> | ||
| 2 | 3 | ||
| 3 | Fix a race condition with glib (Bug#8855). | 4 | Fix a race condition with glib (Bug#8855). |
| 4 | This is a backport from the trunk, consisting of: | 5 | The symptom is a diagnostic "GLib-WARNING **: In call to |
| 6 | g_spawn_sync(), exit status of a child process was requested but | ||
| 7 | SIGCHLD action was set to SIG_IGN and ECHILD was received by | ||
| 8 | waitpid(), so exit status can't be returned." The diagnostic | ||
| 9 | is partly wrong, as the SIGCHLD action is not set to SIG_IGN. | ||
| 10 | The real bug is a race condition between Emacs and glib: Emacs | ||
| 11 | does a waitpid (-1, ...) and reaps glib's subprocess by mistake, | ||
| 12 | so that glib can't find it. Work around the bug by invoking | ||
| 13 | waitpid only on subprocesses that Emacs itself creates. | ||
| 5 | 14 | ||
| 6 | 2012-11-17 Eli Zaretskii <eliz@gnu.org> | 15 | This is a backport from the trunk, consisting of: |
| 7 | 16 | ||
| 8 | * w32proc.c (create_child): Don't clip the PID of the child | 17 | * w32proc.c (create_child): Don't clip the PID of the child |
| 9 | process to fit into an Emacs integer, as this is no longer a | 18 | process to fit into an Emacs integer, as this is no longer a |
| @@ -20,26 +29,10 @@ | |||
| 20 | 29 | ||
| 21 | * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions, | 30 | * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions, |
| 22 | no longer needed. | 31 | no longer needed. |
| 23 | (record_child_status_change): Remove the setting of | 32 | (create_process, record_child_status_change): Don't use special |
| 24 | record_at_most_one_child for the !WNOHANG case. | 33 | value -1 in pid field, as the caller now must know the pid rather |
| 25 | 34 | than having the callee infer it. The inference was sometimes | |
| 26 | 2012-11-03 Paul Eggert <eggert@cs.ucla.edu> | 35 | incorrect anyway, due to another race. |
| 27 | |||
| 28 | Fix a race condition that causes Emacs to mess up glib (Bug#8855). | ||
| 29 | This is a backport from the trunk. | ||
| 30 | The symptom is a diagnostic "GLib-WARNING **: In call to | ||
| 31 | g_spawn_sync(), exit status of a child process was requested but | ||
| 32 | SIGCHLD action was set to SIG_IGN and ECHILD was received by | ||
| 33 | waitpid(), so exit status can't be returned." The diagnostic | ||
| 34 | is partly wrong, as the SIGCHLD action is not set to SIG_IGN. | ||
| 35 | The real bug is a race condition between Emacs and glib: Emacs | ||
| 36 | does a waitpid (-1, ...) and reaps glib's subprocess by mistake, | ||
| 37 | so that glib can't find it. Work around the bug by invoking | ||
| 38 | waitpid only on subprocesses that Emacs itself creates. | ||
| 39 | * process.c (create_process, record_child_status_change): | ||
| 40 | Don't use special value -1 in pid field, as the caller now must | ||
| 41 | know the pid rather than having the callee infer it. The | ||
| 42 | inference was sometimes incorrect anyway, due to another race. | ||
| 43 | (create_process): Set new 'alive' member if child is created. | 36 | (create_process): Set new 'alive' member if child is created. |
| 44 | (process_status_retrieved): New function. | 37 | (process_status_retrieved): New function. |
| 45 | (record_child_status_change): Use it. | 38 | (record_child_status_change): Use it. |
| @@ -47,7 +40,8 @@ | |||
| 47 | processes that Emacs already knows about. Move special-case code | 40 | processes that Emacs already knows about. Move special-case code |
| 48 | for DOS_NT (which lacks WNOHANG) here, from caller. Keep track of | 41 | for DOS_NT (which lacks WNOHANG) here, from caller. Keep track of |
| 49 | processes that have already been waited for, by testing and | 42 | processes that have already been waited for, by testing and |
| 50 | clearing new 'alive' member. | 43 | clearing new 'alive' member. Remove the setting of |
| 44 | record_at_most_one_child for the !WNOHANG case. | ||
| 51 | (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change | 45 | (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change |
| 52 | now does this internally. | 46 | now does this internally. |
| 53 | (handle_child_signal): Let record_child_status_change do all | 47 | (handle_child_signal): Let record_child_status_change do all |