From: Andrew Au Date: Thu, 12 Mar 2026 19:40:34 GMT Subject: Re: [PATCH 0/1] Fix zombie children when git is PID 1 in containers Message-ID: In-Reply-To: Thank you for the suggestion. You are right that tini is a common and reasonable approach, and I will look into using it regardless. That said, I think fixing git to clean up its own children is still worthwhile — processes should not leave zombies on abnormal exit paths whether or not an init helper is present. The two approaches are complementary rather than mutually exclusive. On Wed, Mar 11, 2026 at 2:15 PM brian m. carlson wrote: > > On 2026-02-23 at 16:51:46, Andrew Au wrote: > > When git runs as PID 1 inside a container and exits via exit(128) on > > transport errors, child processes (git-remote-https, ssh, proxy) are > > never waited on because the normal cleanup paths (disconnect_helper, > > finish_connect) are bypassed. Since PID 1 has no parent to reap its > > children, these become zombies that persist for the container's lifetime. > > > > This patch registers atexit handlers in transport-helper.c and connect.c > > to ensure children are reaped on any exit path, and clears them on the > > normal cleanup paths to avoid double-waiting. > > > > Blog post with detailed investigation: https://cshung.github.io/posts/zombie-git/ > > Usually people use a tool like tini as PID 1 in containers, which allows > that process to handle process reaping while still exec'ing the normal > Git or other command. It's the case that _most_ processes are not > designed to run properly as process 1 in a container or otherwise, so > a specialized init-capable helper program is usually a good idea. > > Even with this series to fix some of the process reaping problems, I > expect you'll find other cases in Git where we don't always reap > processes correctly as well, so an init helper would still be useful. > -- > brian m. carlson (they/them) > Toronto, Ontario, CA