Text Extractor TXR - News
Version 026 is out.
Item posted by Kaz Kylheku <kkylheku> on Fri 27 Nov 2009 06:03:35 AM UTC.
I introduced Valgrind integration in the garbage collector. You must pass the --valgrind option to the configure script to set this up. The basic support squashes false positive error reports from valgrind that occur during the marking phase of the mark-and-sweep, since the stack scanning can touch uninitialized data. Furthermore, the txr option --vg-debug, turns on more advanced valgrind support: objects on the GC free/recycle list are marked as inaccessible such that accesses to free objects, while they are free, will be trapped by valgrind. In this mode, FIFO recycling is used: least recently freed objects are allocated first, to maximize the time that a reclaimed object stays on the free list, thus maximizing the chances of catching an invalid ccess to it. One other Valgrind-related fix is to suppress some false positive leak reports: txr's vectors are stored in such a way that the vector data is referenced by an internal pointer, not by a pointer to the base. To valgrind, this looks suspicious. So when Valgrind support is enabled, the library maintains an additional pointer, so the debugger knows that the objects are genuinely reachable.
I fixed some build issues and added configure-time detection for yacc.
Found and fixed two cases of uninitialized memory. (Amazing what you find when valgrind doesn't flood you with false positives!)
The test cases run with zero reports from Valgrind now. (Disclaimer: on my machine, etc). :)
In the @(next) and @(output) directive, the args and nothrow keywords are really keyword symbols now: have to be written as :nothrow and :args. This will be instantly recognizeable by those of you who are Lispers as making sense.
Powered by Savane 3.14-8aba.
Corresponding source code