Tuesday, March 10, 2009

Deadwood and MaraDNS snapshot update

Yesterday, when I released Deadwood 2.1.01, there were still some non-memory-leak errors reported by Valgrind. I found the sounce of these warnings: One of the sources of entropy I use for the random number generator is by reading uninitialized memory; this might give the RNG reasonable entropy when run on Windows systems where the administrator neglects to change the contents of secret.txt.

Well, Valgrind doesn't like seeing uninitialized memory read and used like this and complains loudly. To resolve this issue, I have added a new compile-time define (-DVALGRIND_NOERRORS) that allows the program to be run in Valgrind without getting nasty errors about using uninitialized data. This removes all Valgrind run-time errors.

In addition, I have updated the MaraDNS source code to always use the make.download.embed script to make the download page for MaraDNS, which makes updating this page for new versions of MaraDNS much easier; in addition, I have updated the security page to point out that MaraDNS' hasnt had any reported security problems since August 29, 2007 and the download page to have a pointer to Deadwood, now that Deadwood is stable.

When I say Deadwood is stable, I am not so pretentious to say Deadwood has no bugs. What I mean is that this release of Deadwood has been extensively tested (both with over a year of real-time use and with a SQA battery I have spent the last month setting up) and appears to be ready for general release. This also means that I will fork this codebase; the Deadwood-2.1 codebase is a codebase that I will add no features too, and with which the only changes will be bug fixes.

For example, the -DVALGRIND_NOERRORS change is one that will not be put in the Deadwood 2.1 branch, since this is a feature request (being able to look squeaky clean in Valgrind) and not a bug fix. I will be very conservative about what changes go in to this code, since bugfixes can sometimes introduce new bugs; see, for example, what happened when I worked on fixing the "Google problem", for example; that bug fix introduced two new bugs I had to fix in turn.

I will give Deadwood a rest for a couple of weeks, to make sure the bugs are reasonably ironed out, then will work on making the Deadwood code more modular for embedded systems, starting by making DwMain (the UDP client) and DwTcp (the TCP client) a single combined binary.

The Deadwood snapshot can be downloaded at maradns.org/deadwood/snap and the MaraDNS snapshot can be downloaded at maradns.org/download/1.3/snap.