Yeah, don't worry about the Zombies.. there should only ever be one (of each kind) around, and that behaviour is "normal" -- the alternative would be to have a special thread just to "wait" for the children dying off.. too much fuss.

A "zombie" is a child thread/process which has died, and whose parent process has not yet done a "wait()" syscall for it.. so the corpse just stays in limbo, not responding to anything (very zombie-like) until the irresponsible parent stops partying and shows up at the cemetary to pay final respects (by invoking "wait()").

With kftpd/khttpd, I only wait() for dead offspring as needed, and also do a quick poll after each new incoming connection.. which explains the behaviour you see.

Cheers