Fixing shared app queue unmap size.

Shared app queue takes more memory than port memory.  To unmap all memory pages
correct size need to be specified for munmap() call.  Otherwise 4 Mb memory
leaked on each configured application removal.

The issue was introduced in 1d84b9e4b459.
This commit is contained in:
Max Romanov
2021-02-03 23:23:28 +03:00
parent b1685dbc76
commit 75a5dcfc4e
2 changed files with 14 additions and 1 deletions

View File

@@ -104,6 +104,13 @@ that uses WebSocket.
</para>
</change>
<change type="bugfix">
<para>
a memory leak occurring in the router process when removing or reconfiguring
an application; the bug had appeared in 1.19.0.
</para>
</change>
</changes>

View File

@@ -8,6 +8,7 @@
#include <nxt_runtime.h>
#include <nxt_port.h>
#include <nxt_router.h>
#include <nxt_app_queue.h>
#include <nxt_port_queue.h>
@@ -84,6 +85,8 @@ nxt_port_new(nxt_task_t *task, nxt_port_id_t id, nxt_pid_t pid,
void
nxt_port_close(nxt_task_t *task, nxt_port_t *port)
{
size_t size;
nxt_debug(task, "port %p %d:%d close, type %d", port, port->pid,
port->id, port->type);
@@ -109,7 +112,10 @@ nxt_port_close(nxt_task_t *task, nxt_port_t *port)
}
if (port->queue != NULL) {
nxt_mem_munmap(port->queue, sizeof(nxt_port_queue_t));
size = (port->id == (nxt_port_id_t) -1) ? sizeof(nxt_app_queue_t)
: sizeof(nxt_port_queue_t);
nxt_mem_munmap(port->queue, size);
port->queue = NULL;
}
}