Commit Graph
1 Commits
Author SHA1 Message Date
obscuremind 9c3db348f2 fix(nginx): no thread pool; workers no longer abort when they exit
The shipped nginx is statically linked. At a worker's graceful exit,
exit() runs the global destructors, which deregister the binary's unwind
tables (__deregister_frame_info_bases), while the thread pool's threads
are still unwinding out of pthread_exit(): ngx_thread_pool_destroy()
waits for each thread's flag, set just before pthread_exit(), not for
the thread. A thread that finds no frame info aborts (uw_init_context_1
-> abort). A core from the test MAIN shows both stacks; nginx's
error.log called it 'worker process ... exited on signal 6', about one
reload in eleven (9 in 100 under traffic).

The pool did no work anyway: max_queue=0 refused every task, so aio
threads never ran. Both nginx.conf files drop thread_pool and aio
threads; segments still go out by sendfile.
2026-10-03 06:30:55 +00:00