Subject: Re: [PATCH v2] git-svn: Fix termination issues for remote svn connections

From: Junio C Hamano <[email-masked]>
Date: Mon, 09 Sep 2013 08:42:10 -0700

Uli Heller <[email-masked]> writes:

> From a763550fc59b756580f9b162839d2737c27f2fe3 Mon Sep 17 00:00:00 2001
> From: Uli Heller <[email-masked]>
> Date: Tue, 3 Sep 2013 09:14:03 +0200
> Subject: [PATCH] git-svn: Fix termination issues for remote svn connections

None of the above need to be in the e-mail body (the first one must
not be in the e-mail body, and the other three are redundant).

> When using git-svn in combination with serf-1.2.1 core dumps are
> created on termination. This is caused by a bug in serf, a fix for
> the bug exists (see https://code.google.com/p/serf/source/detail?r=2146).
> Nevertheless, I think it makes sense to fix the issue within the
> git perl module Ra.pm, too. The change frees the private copy of
> the remote access object on termination which prevents the error
> from happening.
>
> Note: Since subversion-1.8.0 and later do require serf-1.2.1 or later,
> the core dumps typically do show up when upgrading to a recent version
> of subversion.
>
> Credits: Jonathan Lambrechts for proposing a fix to Ra.pm.
> Evgeny Kotkov and Ivan Zhakov for fixing the issue in serf and
> pointing me to that fix.
> Junio C Hamano for proposing a great code comment.
> Kyle J. McKay for testing against latest serf (1.3.1).
> ... and various others - thanks!
> ---

Hmph, the only change I see relative to the version in the message
you are responding to is reversion of the proposed commit log
message rewrite I did, and missing sign-off from you, and the latter
of which matters most.

I'd keep the one queued on 'pu' 73ffac3b (git-svn: fix termination
issues for remote svn connections, 2013-09-03) for now.

Thanks.

>  perl/Git/SVN/Ra.pm | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm
> index 75ecc42..a7b0119 100644
> --- a/perl/Git/SVN/Ra.pm
> +++ b/perl/Git/SVN/Ra.pm
> @@ -32,6 +32,14 @@ BEGIN {
>         }
>  }
>
> +# serf has a bug that leads to a coredump upon termination if the
> +# remote access object is left around (not fixed yet in serf 1.3.1).
> +# Explicitly free it to work around the issue.
> +END {
> +       $RA = undef;
> +       $ra_invalid = 1;
> +}
> +
>  sub _auth_providers () {
>         my @rv = (
>           SVN::Client::get_simple_provider(),