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
commit97e61aad736da5fe1ad136a1d3055e16698f7d2b (patch)
treed314b2b917a6ea6b198c7dbd56a4042d339510dd
parentb8ea9d34fdff699006ecfdbd948f113686d2dc0c (diff)
downloadunit-97e61aad736da5fe1ad136a1d3055e16698f7d2b.tar.gz
unit-97e61aad736da5fe1ad136a1d3055e16698f7d2b.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 ba86da5e..2bbec889 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 589821fb..82385ec4 100644
--- a/src/nxt_application.c
+++ b/src/nxt_application.c
@@ -1147,6 +1147,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: