mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Make sure we call process_notify_event_exit() as the last thing in different callbacks.
This patch makes sure that we call process_notify_event_exit() after we have done any modifications we need to do to the state of a process_t. This allows application developers to call process_free() in the exit_callback of the process. See: https://bugs.torproject.org/28179
This commit is contained in:
parent
e982fb1dae
commit
338137221c
@ -549,12 +549,16 @@ process_unix_waitpid_callback(int status, void *data)
|
||||
process_t *process = data;
|
||||
process_unix_t *unix_process = process_get_unix_process(process);
|
||||
|
||||
/* Notify our process. */
|
||||
process_notify_event_exit(process, status);
|
||||
|
||||
/* Remove our waitpid callback. */
|
||||
clear_waitpid_callback(unix_process->waitpid);
|
||||
unix_process->waitpid = NULL;
|
||||
|
||||
/* Notify our process. */
|
||||
process_notify_event_exit(process, status);
|
||||
|
||||
/* Make sure you don't modify the process after we have called
|
||||
* process_notify_event_exit() on it, to allow users to process_free() it in
|
||||
* the exit callback. */
|
||||
}
|
||||
|
||||
/** This function sets the file descriptor in the <b>handle</b> as non-blocking
|
||||
|
@ -445,12 +445,15 @@ process_win32_timer_callback(periodic_timer_t *timer, void *data)
|
||||
tor_assert(data == NULL);
|
||||
|
||||
log_debug(LD_PROCESS, "Windows Process I/O timer ticked");
|
||||
|
||||
/* Move the process into an alertable state. */
|
||||
process_win32_trigger_completion_callbacks();
|
||||
|
||||
/* Check if our processes are still alive. */
|
||||
const smartlist_t *processes = process_get_all_processes();
|
||||
|
||||
SMARTLIST_FOREACH(processes, process_t *, p,
|
||||
process_win32_timer_test_process(p));
|
||||
|
||||
process_win32_trigger_completion_callbacks();
|
||||
}
|
||||
|
||||
/** Test whether a given process is still alive. Notify the Process subsystem
|
||||
|
Loading…
Reference in New Issue
Block a user