Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P1: Destroying
http_buf_poolon the exit path resolves the leak only if no worker thread is still using the pool at that moment. However,khttpd_exit()only stops the daemon thread (kthread_stop(http_server)); the per-connectionhttp_server_workerkthreads spawned inhttp_server_daemon()are never tracked or stopped, so with an active connection a worker can still be blocked in recv holding amempool_alloc'd buffer whenmempool_destroy()frees the pool and runshttp_buf_freeon each element. The worker's latermempool_free(buf, http_buf_pool)then touches freed memory — converting the leak fix into a use-after-free/double-free (likely a crash) whenever unload happens with an open connection. Consider tracking all worker kthreads, stopping them (and draining/returning their buffers) before destroying the pool, so the destroy only runs once no in-flight buffers exist.Prompt for AI agents