This trival program leaks the mutex allocated by xmlInitMemory in 2.6.3 / CVS head. cat > t.c main() { xmlInitParser(); xmlCleanupParser(); } $ gcc -o t `xml2-config --libs` t.c $ valgrind --show-reachable=yes --leak-check=yes -v ./t ... ==25421== 24 bytes in 1 blocks are still reachable in loss record 1 of 2 ==25421== at 0x4002CBEE: malloc (vg_replace_malloc.c:160) ==25421== by 0x402DC782: xmlNewMutex (in /usr/lib/libxml2.so.2.6.3) ==25421== by 0x4029D28D: xmlInitMemory (in /usr/lib/libxml2.so.2.6.3) ==25421== by 0x4028AC49: xmlInitParser (in /usr/lib/libxml2.so.2.6.3) ... (and similarly with CVS head compiled) The cause was the change in CVS 1.46 of xmlmemory.c * xmlmemory.c: enhanced by adding mutex to protect global structures in a multi-threading environment. This fixed some random errors on the Threads regression tests. which didn't add a dealloc routine. Patch to fix attached. Dave
Attachment:
xmlmemory-mutex.patch
Description: Text document