On Thu, Jun 14, 2012 at 10:17 PM, C. Michael Pilato <cmpil...@collab.net> wrote: > On 06/15/2012 03:40 AM, C. Michael Pilato wrote: >> I noticed tonight that my attempts to commit to the ViewVC repository on >> Tigris.org are now failing due to a client-side SEGFAULT. So far, all I >> know is that the failure is due to a call to svn_ra_serf__set_prop() (at >> subversion/libsvn_ra_serf/commit.c:1470) with a NULL path. Because >> Tigris.org is running 1.6.x code, this path comes via the !HTTPv2 branch of >> the preceding logic, which deals with CHECKOUT requests and such. >> Ultimately, it's a NULL baseline URL that's passed to the __set_prop() >> function, eventually leading to the SEGFAULT in APR's hash code (NULL hash >> keys aren't allowed). >> >> This code has worked as recently as yesterday, as I was committing >> successfully to ViewVC at that time. > > More on this: > > There is a NULL baseline URL because in handle_checkout(), this check: > > if (handler->done && handler->sline.code == 201) > > fails due to handler->done having a value of 0. This prevent the code from > harvesting the Location: header value, in which is stored the very baseline > URL we need. > > The attached patch allowed me to get back to committing again. It removes a > bunch of code that appears to be already encapsulated elsewhere (which is a > good thing!), but it also completely disregards the handler->done check. I > suspect that this latter change is wrong, and that the bug simply reveals > some other ra_serf state management problem.
Thanks for finding this, and providing the patch. However... that led to a much larger simplification. See r1350541 for an explanation. Essentially, the function you patched isn't even needed. I completely tossed it :-) Cheers, -g