On Thu, Jun 14, 2012 at 10:17 PM, C. Michael Pilato <cmpilato_at_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
Received on 2012-06-15 10:57:23 CEST