It has been reported in
ZBX-15023 as well as other places that when Zabbix server is stopped during startup due to configuration error or system error then there are zombie processes.
This happens because one of the child processes ignore kill signal from the main process.
Not killed process can lead to situation when zabbix cannot be restarted because old processes already hold some resources that new process needs and will need to be killed manually.
Many historical implementations have timing windows where a signal sent to a process group (for example, an interactive SIGINT) just prior to or during execution of fork() is delivered to the parent following the fork() but not to the child because the fork() code clears the child's set of pending signals
Current suspicion is that when process is forked and killed at the same time then it might clear signal mask, it shall not be assumed that fork is atomic and main process shall retry sending kill signal to child processes if it takes more than one second to get response.
Example patch attached.