What is a zombie process?
A zombie process, or defunct process, has completed execution, but has still an entry in the process table. The process is considered to be terminated, but lacks the proper house keeping to reflect this state.
Normally when a parent process spawns child processes, it will have to use the wait() or waitpid() function. This way when a child exists, the parent will know about it. If no processes waits for a child process, then you get a zombie process. It does no longer take up system resources, but at the same time it stays around. One of the options is sending a SIGCHLD signal to its parent, as this may give the kernel the green light to dispose of the zombie process.
Stopping zombie processes
To clean up a zombie process, try the steps in this article:
Relevant FAQ: How to kill a zombie process?