Hi, On Fri, 18 Jan 2008, Junio C Hamano wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > > > Currently the ones I looked at and consider possible 1.5.4 material > > are http-push fixes from Grégoire Barbier and parse_commit_buffer() > > tightening from Martin Koegler. > > It seems that for the past few days, people were having too much fun > bashing how broken MacOS X is, and the real work has stalled in the > meantime. Well, not really stalled but they certainly made the patches > and discussions harder to find in the list archive. > > [...] > > But there are still unapplied patches that deserve attention. The one > that I am most worried about is Grégoire Barbier's http-push changes: > > $gmane/70406 <1200250979-19604-1-git-send-email-gb@xxxxxxxxxxxx> This patch makes http-push Warn if URL does not end if "/", but it would be even better to just handle it... we know exactly that HTTP URLs _must_ end in a slash. It gives a better warning if the URL cannot be accessed, alright. But I hate the fact that it introduces yet another function which does a bunch of curl_easy_setopt()s only to start an active slot and check for errors. Currently, I am not familiar enough with http-push.c to suggest a proper alternative, but I suspect that the return values of the _existing_ calls to curl should know precisely why the requests failed, and _this_ should be reported. > $gmane/70407 <1200250979-19604-2-git-send-email-gb@xxxxxxxxxxxx> I first could not reproduce the breakage described in the commit message (bad or no ref given on command line). After playing around for a while, all of a sudden, I got a segmentation fault: Waiting for http://dscho@xxxxxxxxx/test.git/objects/56/5e84516c1c6dca168be1715b45aeae70b24d13_36e8d912-4841-455a-bbd9-69e54d00db99 Segmentation fault (core dumped) Unfortunately, this is with _and_ without this patch. In gdb, it looks like this: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1213430096 (LWP 31418)] check_locks () at http-push.c:637 637 if (!lock->refreshing && time_remaining < LOCK_REFRESH) { (gdb) p lock $1 = (struct remote_lock *) 0x20 (gdb) bt #0 check_locks () at http-push.c:637 #1 0x08053f8a in process_response (callback_data=0x80c4550) at http-push.c:683 #2 0x0804dbf4 in process_curl_messages () at http.c:539 #3 0x0804dc46 in step_active_slots () at http.c:453 #4 0x0804dccb in run_active_slot (slot=0x80c2388) at http.c:474 #5 0x0804deaa in http_cleanup () at http.c:291 #6 0x0805268f in main (argc=3, argv=Cannot access memory at address 0x4 ) at http-push.c:2428 So it seems that there is more to fix. > $gmane/70405 <1200250979-19604-3-git-send-email-gb@xxxxxxxxxxxx> This makes sense. I only tried to compile http-push once without CURL_MULTI, and gave up (I think I even sent out a patch disabling CURL_MULTI for curl versions lacking a certain symbol). Ciao, Dscho