Well, I'm not sure if you already know this, but I didn't when I had a similar problem. A zombie is a process that is ready to exit, but is waiting for it's parent to let it die.
In my case I was using Open2 to open some new processes and not calling waitpid() to let them die.
I have never coded a Deamon, but I would suspect a change in that now you have to do the reaping in 5.8, or it is at least more strict about it.