summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2021-12-01 18:05:50 +0300
committerMax Romanov <max.romanov@nginx.com>2021-12-01 18:05:50 +0300
commit64db3ef1bbf32457aefb002b9fecabb6c07923f9 (patch)
treeaa6f85716c8365e787d702b088f0289e3dbe83f6
parent8fb9f7f049474e4d9c80c0b25ad152bb937c2f86 (diff)
downloadunit-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.xml7
-rw-r--r--src/nxt_application.c2
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: