What it is
A zombie process (also called defunct) is a program that already finished, but a tiny entry is still stuck in the system’s process list. This happens mostly on Linux/macOS when a “child” program ends and its “parent” hasn’t picked up the “I’m done” message yet. Zombies don’t use CPU and barely any memory—they just take a slot until they’re cleaned up.
Why it matters
One or two zombies aren’t a problem. If you see lots of them, it usually means an app is a bit buggy, and in extreme cases it can clutter the system so new processes are harder to manage.
How it works
-
Parent starts child: an app launches a helper program.
-
Child finishes: it exits and leaves an exit status behind.
-
Waiting to be “reaped”: the parent is supposed to collect that status.
-
Zombie state: until the parent collects it, the finished child shows as defunct (Z).
-
Auto-clean: if the parent app closes, the system usually cleans up the zombie.
Red flags
-
In
top/psyou see processes marked Z or defunct. -
Many zombies all tied to the same app.
-
An app that spawns helpers (converters, renderers, plugins) keeps “leaking” zombies.
Quick fixes (for everyone)
-
Just a few? Ignore them—they’ll often clear on their own.
-
Many from one app? Close and reopen that app, or restart the computer.
-
Happens often? Update the app and your OS; report the bug to the app’s support.
For power users (optional)
-
Find the parent with
ps -o ppid= -p <zombie_pid>and restart that parent process. -
Developers: handle
SIGCHLDand callwait()/waitpid()so children are reaped correctly.