A child process that finished executing but whose exit status hasn't been reaped by its parent, a Linux process-table leak.
A zombie process is a Unix/Linux process that has completed execution but whose entry remains in the process table because its parent hasn't read its exit status. Zombies consume a process-table slot but no other resources; the issue is that the table has a fixed size and a flood of zombies eventually prevents new processes from spawning. Common causes: a parent that fork()s without later wait()ing, or a misbehaving service-supervisor like PID 1 in a misconfigured container.
Zombies are a classic gotcha for engineers running containerized workloads: the container's PID 1 is whatever process the entrypoint started, not init, so it doesn't reap zombies. Long-running services that fork() (multi-process web servers, agents that spawn subprocesses) accumulate zombies until the container can't fork() new ones, and the symptom is a confusing 'fork failed' error. Run a real init (tini, dumb-init) in containers to reap zombies automatically.
See the part of the platform that handles zombie process in production.