diff options
author | Max Romanov <max.romanov@nginx.com> | 2021-12-01 18:05:50 +0300 |
---|---|---|
committer | Max Romanov <max.romanov@nginx.com> | 2021-12-01 18:05:50 +0300 |
commit | 64db3ef1bbf32457aefb002b9fecabb6c07923f9 (patch) | |
tree | aa6f85716c8365e787d702b088f0289e3dbe83f6 | |
parent | 8fb9f7f049474e4d9c80c0b25ad152bb937c2f86 (diff) | |
download | unit-64db3ef1bbf32457aefb002b9fecabb6c07923f9.tar.gz unit-64db3ef1bbf32457aefb002b9fecabb6c07923f9.tar.bz2 |
Fixing prototype process crash.
A prototype stores linked application processes structures. When an
application process terminates, it's removed from the list. To avoid double
removal, the pointer to the next element should be set to NULL.
The issue was introduced in c8790d2a89bb.
-rw-r--r-- | docs/changes.xml | 7 | ||||
-rw-r--r-- | src/nxt_application.c | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/docs/changes.xml b/docs/changes.xml index 1d4b9645..f5792e85 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -52,6 +52,13 @@ fastcgi_finish_request() was called in the OPcache preloading script. </para> </change> +<change type="bugfix"> +<para> +a prototype process could crash on an application process exit; the bug had +appeared in 1.26.0. +</para> +</change> + </changes> diff --git a/src/nxt_application.c b/src/nxt_application.c index d1ff9ee7..594574b1 100644 --- a/src/nxt_application.c +++ b/src/nxt_application.c @@ -1150,6 +1150,8 @@ nxt_proto_process_remove(nxt_task_t *task, nxt_pid_t pid) process = lhq.value; nxt_queue_remove(&process->link); + process->link.next = NULL; + break; default: |