Just to further clarify Bill's note...
A defunct process is created after a child process terminates and informs the parent process that this has happened.
At this stage, the child process entry is not cleared out of the process table until the parent process terminates normally (as it may be required).
The problem comes after the child process has terminated, if the parent process is abnormally terminated. The child process then becomes owned by the init process - even though there is nothing to own. The entry in the process table therefore remains as init has nothing to control.
Hope it helps.
Cheers,
Dave V.