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

2013-09-09 Thread Uli Heller

From a763550fc59b756580f9b162839d2737c27f2fe3 Mon Sep 17 00:00:00 2001
From: Uli Heller uli.hel...@daemons-point.com
Date: Tue, 3 Sep 2013 09:14:03 +0200
Subject: [PATCH] git-svn: Fix termination issues for remote svn connections

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!
---
 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(),
--
1.8.4

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

2013-09-06 Thread Uli Heller
On Fri, September 6, 2013 1:46 pm, Kyle J. McKay wrote:
 On Sep 5, 2013, at 11:48, Junio C Hamano wrote:
 Uli Heller uli.hel...@daemons-point.com writes:

 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.
 ---

 Thanks.  Please sign-off your patch.

 I am Cc'ing Kyle McKay who apparently had some experience working
 with git-svn with newer svn that can only use serf, hoping that we
 can get an independent opinion/test just to be sure.  Also Cc'ed is
 Eric Wong who has been the official git-svn area expert, but I
 understand that Eric hasn't needed to use git-svn for quite a while,
 so it is perfectly fine if he does not have any comment on this one.

 We may want to find a volunteer to move git svn forward as a new
 area expert (aka subsystem maintainer), by the way.

 perl/Git/SVN/Ra.pm | 5 +
 1 file changed, 5 insertions(+)

 diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm
 index 75ecc42..78dd346 100644
 --- a/perl/Git/SVN/Ra.pm
 +++ b/perl/Git/SVN/Ra.pm
 @@ -32,6 +32,11 @@ BEGIN {
 }
 }

 +END {
 +   $RA = undef;
 +   $ra_invalid = 1;
 +}
 +
 sub _auth_providers () {
 my @rv = (
   SVN::Client::get_simple_provider(),

 I have not, as of yet, been able to reproduce the problem, so I cannot
 verify the solution.  Maybe Uli can provide an example of a git-svn
 command that demonstrates the failure?

 I am running a fresh build of subversion 1.8.3 with serf version 1.3.1
 (the most recent serf release).

 According to the serf library history, version 1.3.1 of serf was
 tagged at revision 2139 from revision 2138, but the serf fix mentioned
 above was checked in at revision 2146, so it cannot possibly be in the
 serf 1.3.1 release.

 I'm using Git built from master (57e4c1783).  I see the same behavior
 both with and without the SVN/Ra.pm patch (and using both bulk updates
 and skelta mode).  Does the problem not happen on a git svn clone?  I
 can force serf back to version 1.2.1 and try that version just to see,
 but I would like to have an example of a known failing git svn command
 for testing purposes.  Thanks.

I think this command should produce the error:

  git svn clone --stdlayout https://github.com/uli-heller/uli-javawrapper

You can use any other svn repo as well, you only have to specify an HTTPS
url.

[Yes, I know you typically don't clone github via git svn]

I'll do some more tests using git HEAD and serf 1.3.1 when I'm back home.

Thanks + best regards, Uli

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

2013-09-06 Thread Uli Heller
On Fri, September 6, 2013 2:44 pm, Kyle J. McKay wrote:
 On Sep 6, 2013, at 05:06, Uli Heller wrote:
 I'm using Git built from master (57e4c1783).  I see the same behavior
 both with and without the SVN/Ra.pm patch (and using both bulk
 updates
 and skelta mode).  Does the problem not happen on a git svn clone?  I
 can force serf back to version 1.2.1 and try that version just to
 see,
 but I would like to have an example of a known failing git svn
 command
 for testing purposes.  Thanks.

 I think this command should produce the error:

  git svn clone --stdlayout https://github.com/uli-heller/uli-javawrapper

 You can use any other svn repo as well, you only have to specify an
 HTTPS
 url.

 Yes, that does it.  Interesting that cloning from
 https://github.com/uli-heller/uli-javawrapper
  core dumps while cloning from
 http://github.com/uli-heller/uli-javawrapper
  does not even though the latter redirects to
 https://github.com/uli-heller/uli-javawrapper
 .

 In any case, I can now reproduce the problem (serf 1.3.1 still breaks
 since it does not yet contain the fix and it is the most recent serf
 release available).

 And the Git/SVN/Ra.pm fix does eliminate the problem for me (both with
 bulk updates and with skelta updates -- the crash occurs with either).

Great. So I don't have to run any more tests ;)

What shall I do next? Add some inline comments to the patch?

---
Best regards, Uli.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

2013-09-03 Thread Uli Heller
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.
---
 perl/Git/SVN/Ra.pm | 5 +
 1 file changed, 5 insertions(+)

diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm
index 75ecc42..78dd346 100644
--- a/perl/Git/SVN/Ra.pm
+++ b/perl/Git/SVN/Ra.pm
@@ -32,6 +32,11 @@ BEGIN {
}
 }

+END {
+   $RA = undef;
+   $ra_invalid = 1;
+}
+
 sub _auth_providers () {
my @rv = (
  SVN::Client::get_simple_provider(),
-- 
1.8.4


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: git svn fetch segfault on exit

2013-09-02 Thread Uli Heller

Am 02.09.2013 13:57, schrieb Evgeny Kotkov:

Every git svn call that involves a fetch produces a segmentation fault on
exit (but the operation succeeds).

 From what I see, this looks quite similiar to the 'serf' issue I've recently
reported to the serf-dev mailing list [1].  It should be fixed by now, so,
the latest serf@trunk build should work fine.

[1]: https://groups.google.com/d/msg/serf-dev/gOn9HTUN98U/pz0_AqdrmJYJ




I've tried the patch for 'serf' included in the thread mentioned above 
and I can confirm that it fixes the issue for me.

Thanks Evgeny!

Best regards, Uli.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html