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.