Repository navigation
bugfix: send the HUP mode signals from perl instead of running kill(1). - #190
Merged
zhuizhuhaomeng merged 1 commit intoOct 27, 2026
Merged
Conversation
With TEST_NGINX_USE_HUP, the USR1 and HUP signals were sent with
system("kill ..."). The kill(1) child inherits the environment of the
test run, including LD_PRELOAD. On Ubuntu 22.04, procps' kill and ps
deadlock at startup (futex wait) when gcc 11's libasan is preloaded, as
lua-nginx-module's ASan CI job does, so the first HUP test hung the job
until the 6 hour limit.
Send the signals with perl's kill() instead, and drop LD_PRELOAD for
the pgrep/ps pipeline used to wait for HTTP/3 connections.
oowl
added a commit
to oowl/lua-nginx-module
that referenced
this pull request
Oct 25, 2026
The ASan job hangs in the first TEST_NGINX_USE_HUP test since CI moved to
Ubuntu 22.04: Test::Nginx sends USR1/HUP with system("kill ..."), and
procps' kill deadlocks at startup under the job's LD_PRELOAD (gcc 11
libasan). Master's own ASan job hangs the same way. Point CI at the
branch of openresty/test-nginx#190, which signals from perl instead.
Drop this commit once that PR is merged.
oowl
added a commit
to oowl/lua-nginx-module
that referenced
this pull request
Oct 25, 2026
The ASan job hangs in the first TEST_NGINX_USE_HUP test since CI moved to
Ubuntu 22.04: Test::Nginx sends USR1/HUP with system("kill ..."), and
procps' kill deadlocks at startup under the job's LD_PRELOAD (gcc 11
libasan). Master's own ASan job hangs the same way. Point CI at the
branch of openresty/test-nginx#190, which signals from perl instead.
Drop this commit once that PR is merged.
zhuizhuhaomeng
approved these changes
Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Related PRs
pool_sizein the balancer keepalive FFI API, per-pool descriptorsbalancer.enable_keepalive(idle_timeout?, max_requests?, pool_size?)Suggested merge order:
TEMPORARYCI commit from feature: added the pool_size argument to the balancer keepalive FFI API. lua-nginx-module#2536.TEMPORARYCI commit from feature: ngx.balancer: added the pool_size argument to enable_keepalive(). lua-resty-core#544 once #2536 is on master.Problem
With
TEST_NGINX_USE_HUP,Test::Nginx::Utilreloads nginx withsystem("kill -USR1 $pid")andsystem("kill -HUP $pid"). Thekill(1)child inherits the test environment, includingLD_PRELOAD.On Ubuntu 22.04, procps'
kill(andps) deadlock at startup in a futex wait when gcc 11'slibasan.sois inLD_PRELOAD. lua-nginx-module's ASan CI job preloads it, so the first HUP test file (t/078-hup-vars.t) hangs the job until the 6 hour limit. This has happened since that CI moved toubuntu-22.04. Example on master: https://github.com/openresty/lua-nginx-module/actions/runs/39918204085How I narrowed it down on an
ubuntu-22.04runner with the ASan job'sLD_PRELOAD:/usr/bin/kill -0 $$,/bin/kill -0 $$,ps -p $$futex_wait_queue)/bin/true,sh -c true,env true,perl -e 1At the time of the hang, nginx itself is healthy: the master is in
sigsuspendand the worker inepoll_wait. Only thekillchild is stuck.Change
kill(). No child process is involved, and the success check is unchanged.LD_PRELOAD(delete local $ENV{LD_PRELOAD}) for thepgrep | xargs pspipeline that waits for HTTP/3 connections. It runs the same procps tools.Testing
TEST_NGINX_USE_HUPfiles of lua-nginx-module (t/078,t/080,t/109,t/122-worker-3,t/149,t/151,t/157,t/163-exit-worker-hup) pass under ASan onubuntu-22.04.prove -Ilib t/in this repo: same result as master (62 tests pass).