OK, I've fixed the one real bug with real-world consequences I can see with Deadwood. I have added some error correction so that, should the upstream server give us a malformed DNS packet, the packet is discarded and not cached.
I also have code so that, should a zero-length packet (a packet caused by a malformed DNS packet) be in the cache, the offending packet is deleted, and Deadwood tries to get a legitimate packet from the upstream DNS provider.
So now, I have to work on some of the other bugs in Deadwood. The next thing I want to fix is the problem with "resurrections" (using an expired record from the cache should it be impossible to contact the upstream DNS provider) which are not working.
After that, I want to look at the "Google problem" (described in the docs).
In the meantime, Deadwood is a perfectly usable DNS caching server.