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.
--
C. Michael Pilato <cmpilato_at_collab.net>
CollabNet <> www.collab.net <> Enterprise Cloud Development
Received on 2012-06-15 04:18:16 CEST