On Mon, Aug 1, 2011 at 17:22, Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote: > In case anyone would like to look into this I had this undiagnosed > free() error from git-remote-http in git version 1.7.2.1: Actually this is still an issue in master, CC-ing Tay who introduced this error. This evil hack would get around it most of the time, but would introduce another race condition: diff --git a/http.c b/http.c index a1ea3db..ba81158 100644 --- a/http.c +++ b/http.c @@ -1212,6 +1212,7 @@ struct http_object_request *new_http_object_request(const char *base_url, ssize_t prev_read = 0; long prev_posn = 0; char range[RANGE_HEADER_SIZE]; + int allocated_url = 0; struct curl_slist *range_header = NULL; struct http_object_request *freq; @@ -1260,6 +1261,7 @@ struct http_object_request *new_http_object_request(const char *base_url, git_SHA1_Init(&freq->c); freq->url = get_remote_object_url(base_url, hex, 0); + allocated_url = 1; /* * If a previous temp file is present, process what was already @@ -1330,7 +1332,8 @@ struct http_object_request *new_http_object_request(const char *base_url, abort: free(filename); - free(freq->url); + if (allocated_url) + free(freq->url); free(freq); return NULL; } One option would be to memzero freq, but that'll trip up xmalloc which tries to set things to 0xA5 under XMALLOC_POISON. I don't know what the proper way to solve this would be. -- To unsubscribe from this list: 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