On Fri, 2006-06-16 at 23:31 -0400, Jon Smirl wrote: > Parsecvs was compiled '-O2 -g' why didn't it decode the addresses to symbols? Sorry, I was too quick to put blame on you. Maybe glibc can only list its own symbols. I could reproduce the problem trivially with a single file, and here's what Valgrind says: ==11154== Invalid free() / delete / delete[] ==11154== at 0x4905423: free (vg_replace_malloc.c:233) ==11154== by 0x40C136: git_pack_directory (git.c:620) ==11154== by 0x40C1B4: git_rev_list_pack (git.c:639) ==11154== by 0x4067DA: main (parsecvs.c:785) git_pack_directory() tries to free() the result of git_system_to_string(), which is in turn a result of atom(). My understanding is that atoms should not be freed. They are not freed in other cases. Patch: diff --git a/README b/README diff --git a/git.c b/git.c index 33b29c7..7312568 100644 --- a/git.c +++ b/git.c @@ -617,7 +617,6 @@ git_pack_directory (void) } free (objects_dir); pack_dir = git_format_command ("%s/objects/pack", git_dir); - free (git_dir); if (!pack_dir) return NULL; if (access (pack_dir, F_OK) == -1 && -- Regards, Pavel Roskin - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html