Another month has passed since I last wrote about my work on the Mac OS X port of Valgrind. In that time 126 commits have been made to the DARWIN branch (and a similar number to the trunk). I’ve done a lot of them, but Julian Seward has found some time to work on the DARWIN branch and so has been doing some as well.
Here are the current (as of r9455) values of the metrics I have been using as a means of tracking progress.
- The number of regression test failures on Linux was: 484 tests, 4 stderr failures, 1 stdout failures, 0 post failures (which I’ll abbreviate as 484/4/1/0). It’s now 484/0/1/0. I.e. the number of failures went from 5 to 1, and that one failure occurs on my machine even on the trunk (it’s a bad test). In other words, the branch works on Linux as well as the trunk. Now that this metric is the same on the branch as the trunk, I won’t bother tracking it in the future.
- The number of regression test failures on Mac was 402/213/52/0. It’s now 422/172/41/0. I.e. the number of failures went from 265 to 213. Also, 20 extra tests are being run — a broken CPU feature-detection program meant that a number of tests that should have been running were not, and this has been fixed. Once again, this is the most important metric, and it’s improving steadily, but there’s still a long way to go. One encouraging thing here is that 121 of these failures (more than half) involve the tools Helgrind, DRD and exp-Ptrcheck, which are three of the less-used tools in the Valgrind distribution, and which are all completely broken on the branch, and which I haven’t really looked at yet precisely because they are less-used. The other 92 failures involve Memcheck and Nulgrind (the “no-instrumentation” tool, failures for which indicate problems with the testing of Valgrind’s core). A lot of these are problems with non-portable tests, rather than the Darwin port’s functionality. Furthermore, the tools Cachegrind, Callgrind, and Massif pass all of their tests.
- The size of the diff between the trunk and the branch was 41,895 lines (1.5MB). It’s now 38,248 (1.3MB). But note, once again, that this is not a very useful metric. I just scanned through the diff and there’s not a great deal of differences in the diff than can be merged before we reach the point of the big branch-to-trunk merge.
Functionality improvements are as follows.
- Basic signals are now supported, thanks to Julian. This accounted for a lot of the new test passes. This also means that debug builds of Firefox run successfully!
- Some extra system calls are handled.
- 64-bit builds are working. To configure Valgrind for them, pass to ./configure the option –build=amd64-darwin. 64-bit Valgrind is quite slow, it does some very large mmaps at startup which take several seconds. This will need to be fixed. This also hasn’t been tested as much as the 32-bit version, and passes fewer tests.
I’m taking three weeks of vacation starting on Thursday, so progress on Valgrind+Darwin will be minimal over the next month. But I will be visiting Mountain View early next week (Monday, March 23 and Tuesday, March 24) so I’ll be able to actually meet some of the people I work with! I may also give a talk about Valgrind, depending on whether it can be scheduled. Any suggestions for things to talk about are welcome.