mirror of
https://github.com/nginx/nginx.git
synced 2024-12-22 07:03:27 -06:00
test premature process termination
This commit is contained in:
parent
130690fceb
commit
42846485a2
@ -19,10 +19,11 @@ ngx_process_t ngx_processes[NGX_MAX_PROCESSES];
|
|||||||
ngx_pid_t
|
ngx_pid_t
|
||||||
ngx_spawn_process(ngx_cycle_t *cycle, char *name, ngx_int_t respawn)
|
ngx_spawn_process(ngx_cycle_t *cycle, char *name, ngx_int_t respawn)
|
||||||
{
|
{
|
||||||
u_long rc, n;
|
u_long rc, n, code;
|
||||||
ngx_int_t s;
|
ngx_int_t s;
|
||||||
ngx_pid_t pid;
|
ngx_pid_t pid;
|
||||||
ngx_exec_ctx_t ctx;
|
ngx_exec_ctx_t ctx;
|
||||||
|
HANDLE events[2];
|
||||||
char file[MAX_PATH + 1];
|
char file[MAX_PATH + 1];
|
||||||
|
|
||||||
if (respawn >= 0) {
|
if (respawn >= 0) {
|
||||||
@ -79,12 +80,15 @@ ngx_spawn_process(ngx_cycle_t *cycle, char *name, ngx_int_t respawn)
|
|||||||
ngx_sprintf(ngx_processes[s].reopen_event, "ngx_%s_reopen_%ul%Z",
|
ngx_sprintf(ngx_processes[s].reopen_event, "ngx_%s_reopen_%ul%Z",
|
||||||
name, pid);
|
name, pid);
|
||||||
|
|
||||||
rc = WaitForSingleObject(ngx_master_process_event, 5000);
|
events[0] = ngx_master_process_event;
|
||||||
|
events[1] = ctx.child;
|
||||||
|
|
||||||
|
rc = WaitForMultipleObjects(2, events, 0, 5000);
|
||||||
|
|
||||||
ngx_time_update(0, 0);
|
ngx_time_update(0, 0);
|
||||||
|
|
||||||
ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, 0,
|
ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, 0,
|
||||||
"WaitForSingleObject: %ul", rc);
|
"WaitForMultipleObjects: %ul", rc);
|
||||||
|
|
||||||
switch (rc) {
|
switch (rc) {
|
||||||
|
|
||||||
@ -126,6 +130,18 @@ ngx_spawn_process(ngx_cycle_t *cycle, char *name, ngx_int_t respawn)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WAIT_OBJECT_0 + 1:
|
||||||
|
if (GetExitCodeProcess(ctx.child, &code) == 0) {
|
||||||
|
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
|
||||||
|
"GetExitCodeProcess(%P) failed", pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
|
||||||
|
"%s process %P exited with code %Xul",
|
||||||
|
name, pid, code);
|
||||||
|
|
||||||
|
goto failed;
|
||||||
|
|
||||||
case WAIT_TIMEOUT:
|
case WAIT_TIMEOUT:
|
||||||
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
|
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
|
||||||
"the event \"%s\" was not signaled for 5s",
|
"the event \"%s\" was not signaled for 5s",
|
||||||
|
Loading…
Reference in New Issue
Block a user