OK, after over a day of testing, it looks like I have definitely fixed the crash bug. Cityhopper showed me how to look at Dr. Watson logs in Windows XP, which I did in order to verify all of the crashes we have seen are caused by the code I have since fixed. When they say C is portable assembler, they mean it; the compiled assembly looks a lot like the C code.
That in mind, I have released Deadwood 2.4.04. The only change from the 20080718 snapshot is that we only log times when we get a valid DNS packet, but the packet is not correctly decompressed-then-compressed.
I did a lot of testing this weekend and I have yet to see a DNS packet that doesn't decompress-then-compress correctly. If people see this (it's logged in dwlog.txt or on standard output in CentOS 5), let me know with the full DNS packets.
Now that Deadwood can compress and decompress DNS packets (it takes some 5k of code to do this), the next step is to add support for TTL aging and RR rotation.
It can be downloaded at maradns.org/deadwood/testing