openresty/lua-nginx-module

ngx.pipe.spawn shell mode child process not killed after openresty exits

Open

#1,855 opened on Feb 19, 2021

View on GitHub
 (5 comments) (0 reactions) (0 assignees)C (2,038 forks)batch import
good first issue

Repository metrics

Stars
 (11,407 stars)
PR merge metrics
 (Avg merge 1d 5h) (6 merged PRs in 30d)

Description

When using ngx.pipe.spawn in shell mode (args is a string), sh -c in invoked internally. While OpenResty exists, SIGKILL is sent to sh process, but it's not able to propogate to child process. The child process is then left alive.

POC:

init_work_by_lua_block {
  require("ngx.pipe").spawn("/tmp/a.py")
}

$ cat /tmp/a.py:

#!/usr/bin/env python3
import time
time.sleep(23333)

Then signal stop the OpenResty/Nginx process.

Contributor guide