[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: SEGFAULT committing against tigris.org with HEAD client code.

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: Fri, 15 Jun 2012 04:17:30 +0200

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

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.