in reply to CHLD signal?

There could be a few things going on. But If I had to guess I'd say that your SIGCHLD signal-handler is non-re-entrant (see this earlier discussions on non-reentrance Malloc is not reentrant?).

Your best bet may be to trim down your SIGCHLD handler as much as possible. If there's no-way getting around doing a bunch of work when your child process ends, you may want to consider doing something like queing the info you need from the deceased child process and do the work a little later on (once you're out of the signal-handler).

Seeing the code for your SIGCHLD handler (or giving us an idea of what it is doing) may help the Monestary assist you in your quest.