Skip to contentSkip to conversation

Segmentation fault in git-svn

PATCH In review Steven Grimm 3 participants 12 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

I expect this is really a libsvn bug, but git-svn triggers it, so I'm hoping someone else has run into and solved it, or at least that someone can reproduce it.

If I try to clone the "memcached" public repository with the command line

git-svn clone --branches=branches --trunk=trunk
http://code.sixapart.com/svn/memcached

it cranks along fine until revision 299, then dies with SIGSEGV. If I run it again, it appears to pick up where it left off, then dies again at revision 399, then again at revision 499. (There are fewer than 600 revisions in that repo so it's anyone's guess if it'd die at 599 given the chance.)

This happens on both a Linux box (amd64, FC4, svn version 1.4.3) and my Mac (Intel OS 10.4, svn version 1.2.3 from Fink), so at the very least it's not platform-specific. It also happens periodically on the private svn repository at my company, though not as predictably. On my Mac, I'm using the very latest git code from "master".

I ran the Perl interpreter under gdb to get a stack trace:

#0 get_private (hk=0x8050300000001, id=0x2aaaaf187b2b "SVN") at ne_request.c:273
#1 0x00002aaaaf186983 in parsed_request (sess=0xfbc0e0, method=0x2aaaaf188e19 "PROPFIND", url=0x11e5ab0 "/svn/memcached",
body=0x100ce00 "<?xml version=\"1.0\" encoding=\"utf-8\"?><propfind
xmlns=\"DAV:\"><prop><version-controlled-configuration xmlns=\"DAV:\"/><resourcetype xmlns=\"DAV:\"/><baseline-relative-path xmlns=\"http://subversion.tigris.o"..., body_file=0x0, set_parser=0x2aaaaf1816e0 <set_parser>, elements=0x2aaaaf28c9e0, use_neon_shim=1, validate_compat_cb=0x2aaaaf1811b0 <validate_element>,
startelm_compat_cb=0x2aaaaf181290 <start_element>,
endelm_compat_cb=0x2aaaaf181400 <end_element>, startelm_cb=0, cdata_cb=0, endelm_cb=0, baton=0x7fffff84f630, extra_headers=0x11e5ac0,
status_code=0x0, spool_response=0, pool=0x11e5788) at
subversion/libsvn_ra_dav/util.c:602
#2 0x00002aaaaf187228 in svn_ra_dav__parsed_request_compat (sess=Variable "sess" is not available.
) at subversion/libsvn_ra_dav/util.c:876
#3 0x00002aaaaf1818b8 in svn_ra_dav__get_props (results=0x7fffff84f6d0, sess=0xfbc0e0, url=0x11e5ab0 "/svn/memcached", depth=Variable "depth" is not available.
) at subversion/libsvn_ra_dav/props.c:531
#4 0x00002aaaaf1819b6 in svn_ra_dav__get_props_resource (rsrc=0x7fffff84f7e8, sess=0xfbc0e0, url=0x11e5a80 "/svn/memcached", label=0x0, which_props=0x2aaaaf28c940, pool=0x11e5788)
at subversion/libsvn_ra_dav/props.c:558
#5 0x00002aaaaf181c16 in svn_ra_dav__search_for_starting_props (rsrc=0x7fffff84f7e8, missing_path=0x7fffff84f7e0, sess=0xfbc0e0, url=0xfaefd8 "http://code.sixapart.com/svn/memcached",
pool=0x11e5788) at subversion/libsvn_ra_dav/props.c:667
#6 0x00002aaaaf181e85 in svn_ra_dav__get_baseline_props (bc_relative=0x7fffff84f850, bln_rsrc=0x7fffff84f868, sess=0xfbc0e0, url=Variable "url" is not available.
) at subversion/libsvn_ra_dav/props.c:775
#7 0x00002aaaaf1824a3 in svn_ra_dav__get_baseline_info (is_dir=0x0, bc_url=0x7fffff84f990, bc_relative=0x7fffff84f980, latest_rev=0x0, sess=0xfbc0e0, url=Variable "url" is not available.
)
at subversion/libsvn_ra_dav/props.c:898
#8 0x00002aaaaf17ffe0 in svn_ra_dav__get_log (session=Variable "session" is not available.
) at subversion/libsvn_ra_dav/log.c:430
#9 0x00002aaaaf4c46fa in _wrap_svn_ra_get_log (my_perl=Variable "my_perl" is not available.
) at svn_ra.c:4552
#10 0x0000003bd9e9b67e in Perl_pp_entersub () from /usr/lib64/perl5/5.8.6/x86_64-linux-thread-multi/CORE/libperl.so
#11 0x0000003bd9e7f3cd in Perl_runops_debug () from /usr/lib64/perl5/5.8.6/x86_64-linux-thread-multi/CORE/libperl.so
#12 0x0000003bd9e39b49 in perl_run () from /usr/lib64/perl5/5.8.6/x86_64-linux-thread-multi/CORE/libperl.so
#13 0x0000000000401a01 in main ()

Can anyone else reproduce this?

-Steve

#1 lore raw
Quoted 3 lines · Steven Grimm

I expect this is really a libsvn bug, but git-svn triggers it, so I'm hoping someone else has run into and solved it, or at least that someone can reproduce it.

I've also been working with another user off-list the past few days on tracking down on a segmentation fault in git-svn.

Quoted 4 lines

If I try to clone the "memcached" public repository with the command line

git-svn clone --branches=branches --trunk=trunk
http://code.sixapart.com/svn/memcached

I just ran this several (6?) times got a segmentation fault once with Junio's master @ f948792990f82a35bf0c98510e7511ef8acb9cd3.

Trying it again with the same file that segfaulted earlier, it was successful, spooky...

I also tried some other patches (see replies) which I've been testing to fix the other user's problem.

Quoted 5 lines

it cranks along fine until revision 299, then dies with SIGSEGV. If I run it again, it appears to pick up where it left off, then dies again at revision 399, then again at revision 499. (There are fewer than 600 revisions in that repo so it's anyone's guess if it'd die at 599 given the chance.)

I have definitely not seen this pattern before.

However, the following clone has been problematic at times

git svn clone svn://svn.debian.org/svn/pkg-glibc/glibc-package \
-T trunk -b branches -t tags

Quoted 5 lines

This happens on both a Linux box (amd64, FC4, svn version 1.4.3) and my Mac (Intel OS 10.4, svn version 1.2.3 from Fink), so at the very least it's not platform-specific. It also happens periodically on the private svn repository at my company, though not as predictably. On my Mac, I'm using the very latest git code from "master".

I'm running x86, Debian Etch, SVN 1.4.2 from Debian Etch or 1.4.3 from Debian experimental + do_switch patch[1]

Thanks for the stack trace. This is segfaulting at a different place (expected, being an http:// repo while the other is svn://)

[1] - http://svn.haxx.se/dev/archive-2007-01/0936.shtml

Signature · 1 line
Eric Wong
#2 lore raw

PATCH 1/1 git-svn: cache SVN::Ra functions in a more Perl GC-friendly way

The dirent hash objects returned by get_dir() rely on the temporary pool allocated within our wrapper function itself. Apparently pushing the pool into global storage that was used in its creation does not seem to be enough to avoid it from being garbage-collected; so duplicate that into a plain-old nested hash...

This should not cause data from imports to be corrupted, as get_dir is only used between the fetching of revisions and not the revision data itself. The memory usage done during the actual data fetches (which is checksummed) only relies on newly allocated pools.

Also, put our caches for get_dir and check_path calls directly into the SVN::Ra object so they auto-expire when it is destroyed.

Since calling rev_proplist repeatedly per-revision is no longer needed in git-svn, we do not cache calls to it.

---
 git-svn.perl |   68 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 42 insertions(+), 26 deletions(-)
git-svn.perl +42 -26
index 7ebd07b..eb3b79c 100755
@@ -1360,7 +1360,7 @@ sub traverse_ignore {
 		}
 	}
 	foreach (sort keys %$dirent) {
-		next if $dirent->{$_}->kind != $SVN::Node::dir;
+		next if $dirent->{$_}->{kind} != $SVN::Node::dir;
 		$self->traverse_ignore($fh, "$path/$_", $r);
 	}
 }
@@ -2855,7 +2855,7 @@ my ($can_do_switch, %ignored_err, $RA);
 BEGIN {
 	# enforce temporary pool usage for some simple functions
 	my $e;
-	foreach (qw/get_latest_revnum get_uuid get_repos_root/) {
+	foreach (qw/rev_proplist get_latest_revnum get_uuid get_repos_root/) {
 		$e .= "sub $_ {
 			my \$self = shift;
 			my \$pool = SVN::Pool->new;
@@ -2864,29 +2864,7 @@ BEGIN {
 			wantarray ? \@ret : \$ret[0]; }\n";
 	}
 
-	# get_dir needs $pool held in cache for dirents to work,
-	# check_path is cacheable and rev_proplist is close enough
-	# for our purposes.
-	foreach (qw/check_path get_dir rev_proplist/) {
-		$e .= "my \%${_}_cache; my \$${_}_rev = 0; sub $_ {
-			my \$self = shift;
-			my \$r = pop;
-			my \$k = join(\"\\0\", \@_);
-			if (my \$x = \$${_}_cache{\$r}->{\$k}) {
-				return wantarray ? \@\$x : \$x->[0];
-			}
-			my \$pool = SVN::Pool->new;
-			my \@ret = \$self->SUPER::$_(\@_, \$r, \$pool);
-			if (\$r != \$${_}_rev) {
-				\%${_}_cache = ( pool => [] );
-				\$${_}_rev = \$r;
-			}
-			\$${_}_cache{\$r}->{\$k} = \\\@ret;
-			push \@{\$${_}_cache{pool}}, \$pool;
-			wantarray ? \@ret : \$ret[0]; }\n";
-	}
-	$e .= "\n1;";
-	eval $e or die $@;
+	eval "$e; 1;" or die $@;
 }
 
 sub new {
@@ -2919,9 +2897,47 @@ sub new {
 	$self->{svn_path} = $url;
 	$self->{repos_root} = $self->get_repos_root;
 	$self->{svn_path} =~ s#^\Q$self->{repos_root}\E(/|$)##;
+	$self->{cache} = { check_path => { r => 0, data => {} },
+	                   get_dir => { r => 0, data => {} } };
 	$RA = bless $self, $class;
 }
 
+sub check_path {
+	my ($self, $path, $r) = @_;
+	my $cache = $self->{cache}->{check_path};
+	if ($r == $cache->{r} && exists $cache->{data}->{$path}) {
+		return $cache->{data}->{$path};
+	}
+	my $pool = SVN::Pool->new;
+	my $t = $self->SUPER::check_path($path, $r, $pool);
+	$pool->clear;
+	if ($r != $cache->{r}) {
+		%{$cache->{data}} = ();
+		$cache->{r} = $r;
+	}
+	$cache->{data}->{$path} = $t;
+}
+
+sub get_dir {
+	my ($self, $dir, $r) = @_;
+	my $cache = $self->{cache}->{get_dir};
+	if ($r == $cache->{r}) {
+		if (my $x = $cache->{data}->{$dir}) {
+			return wantarray ? @$x : $x->[0];
+		}
+	}
+	my $pool = SVN::Pool->new;
+	my ($d, undef, $props) = $self->SUPER::get_dir($dir, $r, $pool);
+	my %dirents = map { $_ => { kind => $d->{$_}->kind } } keys %$d;
+	$pool->clear;
+	if ($r != $cache->{r}) {
+		%{$cache->{data}} = ();
+		$cache->{r} = $r;
+	}
+	$cache->{data}->{$dir} = [ \%dirents, $r, $props ];
+	wantarray ? (\%dirents, $r, $props) : \%dirents;
+}
+
 sub DESTROY {
 	# do not call the real DESTROY since we store ourselves in $RA
 }
@@ -3136,7 +3152,7 @@ sub match_globs {
 		return unless scalar @x == 3;
 		my $dirents = $x[0];
 		foreach my $de (keys %$dirents) {
-			next if $dirents->{$de}->kind != $SVN::Node::dir;
+			next if $dirents->{$de}->{kind} != $SVN::Node::dir;
 			my $p = $g->{path}->full_path($de);
 			next if $exists->{$p};
 			next if (length $g->{path}->{right} &&
Signature · 1 line
Eric Wong
#3 lore raw

Re: [PATCH (WIP)] git-svn: cache SVN::Ra functions in a more Perl GC-friendly way

FYI, with this patch, it actually dies more often. The stack seems to be corrupted so I can't give you a useful stack trace, but here's what gdb says:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000024 0x90002fe0 in strcmp ()
(gdb) where
#0 0x90002fe0 in strcmp ()
#1 0x004e2ac6 in get_private ()
Previous frame inner to this frame (corrupt stack?)

-Steve

#4 lore raw

Re: [PATCH (WIP)] git-svn: cache SVN::Ra functions in a more Perl GC-friendly way

Quoted 3 lines · Steven Grimm

FYI, with this patch, it actually dies more often. The stack seems to be corrupted so I can't give you a useful stack trace, but here's what gdb says:

Yikes.

Thanks for the feedback. Sorry, I've still been busy with another big project and haven't been able to track down this nasty bug.

If somebody wants to take a stab at working around it: hack up a patch that forks a new child (reusing the main connection) for every revision it needs to fetch. It should still be as fast as normal on *nix machines because fork() is fast and it won't have to renegotiate the connection in every child, but memory leaks and corruption won't have a chance to accumulate.

Signature · 1 line
Eric Wong
#5 lore raw
In reply to Eric Wong

This disables some pool allocations, forcing it to use the global one.

Other than that, my eyes are barely open and my brain is having trouble functioning at this time of morning.

git-svn.perl +4 -4
index ac44f60..cff81f7 100755
@@ -2883,7 +2883,7 @@ BEGIN {
 			wantarray ? \@ret : \$ret[0]; }\n";
 	}
 	$e .= "\n1;";
-	eval $e or die $@;
+	# eval $e or die $@;
 }
 
 sub new {
@@ -2925,10 +2925,10 @@ sub DESTROY {
 
 sub get_log {
 	my ($self, @args) = @_;
-	my $pool = SVN::Pool->new;
+	# my $pool = SVN::Pool->new;
 	splice(@args, 3, 1) if ($SVN::Core::VERSION le '1.2.0');
-	my $ret = $self->SUPER::get_log(@args, $pool);
-	$pool->clear;
+	my $ret = $self->SUPER::get_log(@args);
+	# $pool->clear;
 	$ret;
 }
 
Signature · 1 line
Eric Wong
#6 lore raw
Quoted 2 lines · Eric Wong

This disables some pool allocations, forcing it to use the global one.

The verdict is still out on all patches and attempts I've posted to fix the segfault. I'm quite busy at the moment and won't be attending to git-svn things for another few days.

Signature · 1 line
Eric Wong
#7 lore raw
Quoted 4 lines · Eric Wong

Eric Wong <[email protected]> wrote:
The verdict is still out on all patches and attempts I've posted to fix the segfault. I'm quite busy at the moment and won't be attending to git-svn things for another few days.

Ok, those didn't work. I'm still preoccupied with another project that has a higher priority; and I've come down with a cold so if anybody else wants to step up to the plate, please take a stab at it.

This issue has NOT been known to cause data corruption from any users that experienced it[1]. It seems to be happening in between when changesets are actually fetched.

[1] - if there is any corruption to a particular file, it'll trigger an MD5 mismatch the next time that file is updated.

Signature · 1 line
Eric Wong
#8 lore raw
In reply to Steven Grimm
Quoted 14 lines · Steven Grimm

I expect this is really a libsvn bug, but git-svn triggers it, so I'm hoping someone else has run into and solved it, or at least that someone can reproduce it.

If I try to clone the "memcached" public repository with the command line

git-svn clone --branches=branches --trunk=trunk
http://code.sixapart.com/svn/memcached

it cranks along fine until revision 299, then dies with SIGSEGV. If I run it again, it appears to pick up where it left off, then dies again at revision 399, then again at revision 499. (There are fewer than 600 revisions in that repo so it's anyone's guess if it'd die at 599 given the chance.)

Quoted 6 lines

This happens on both a Linux box (amd64, FC4, svn version 1.4.3) and my Mac (Intel OS 10.4, svn version 1.2.3 from Fink), so at the very least it's not platform-specific. It also happens periodically on the private svn repository at my company, though not as predictably. On my Mac, I'm using the very latest git code from "master".

I'm getting segfaults in git-svn, too.

This command segfaults reproducably in r55 while running

	git svn clone svn://svn.berlios.de/vermont vermont \
		-T trunk -b branches -t tags

I recompiled the debian subversion 1.4.3dfsg1-1 with debug support, to get a better idea what went wrong.

Relevant output from running this beast under valgrind:
(full valgrind output available at [1])

[...]
r54 = f80e8d0ad785cae5a4abfb1fdd04b31167553ab0 (trunk)
D collector/src/testCollector.h
M collector/src/rcvIpfix.h
M collector/src/rcvMessage.c
M collector/src/common.c
M collector/src/rcvIpfix.c
M collector/src/common.h
r55 = 3fddc1de138e9457385ff43111bcaf6f82884525 (trunk) ==10403==
==10403== Invalid read of size 1

==10403==    at 0x59F90A6: readbuf_getchar (marshal.c:285)
==10403==    by 0x59F90E6: readbuf_getchar_skip_whitespace (marshal.c:294)
==10403==    by 0x59FA0F3: svn_ra_svn_read_item (marshal.c:621)
==10403==    by 0x59FA628: svn_ra_svn_read_tuple (marshal.c:741)
==10403==    by 0x59FA906: svn_ra_svn_read_cmd_response (marshal.c:799)
==10403==    by 0x59ED81D: handle_auth_request (client.c:346)
==10403==    by 0x59F02B1: ra_svn_check_path (client.c:1284)
==10403==    by 0x59B7FD7: svn_ra_check_path (ra_loader.c:564)
==10403==    by 0x599DC93: _wrap_svn_ra_check_path (svn_ra.c:6019)
==10403==    by 0x80BDAD0: Perl_pp_entersub (in /usr/bin/perl)
==10403==    by 0x80BC3A8: Perl_runops_standard (in /usr/bin/perl)
==10403==    by 0x8063A1A: perl_run (in /usr/bin/perl)

==10403== Address 0x6F6C6720 is not stack'd, malloc'd or (recently) free'd ==10403==
==10403== Process terminating with default action of signal 11 (SIGSEGV) ==10403== Access not within mapped region at address 0x6F6C6720

==10403==    at 0x59F90A6: readbuf_getchar (marshal.c:285)
==10403==    by 0x59F90E6: readbuf_getchar_skip_whitespace (marshal.c:294)
==10403==    by 0x59FA0F3: svn_ra_svn_read_item (marshal.c:621)
==10403==    by 0x59FA628: svn_ra_svn_read_tuple (marshal.c:741)
==10403==    by 0x59FA906: svn_ra_svn_read_cmd_response (marshal.c:799)
==10403==    by 0x59ED81D: handle_auth_request (client.c:346)
==10403==    by 0x59F02B1: ra_svn_check_path (client.c:1284)
==10403==    by 0x59B7FD7: svn_ra_check_path (ra_loader.c:564)
==10403==    by 0x599DC93: _wrap_svn_ra_check_path (svn_ra.c:6019)
==10403==    by 0x80BDAD0: Perl_pp_entersub (in /usr/bin/perl)
==10403==    by 0x80BC3A8: Perl_runops_standard (in /usr/bin/perl)
==10403==    by 0x8063A1A: perl_run (in /usr/bin/perl)

==10403==
==10403== ERROR SUMMARY: 199 errors from 26 contexts (suppressed: 19 from 1) ==10403== malloc/free: in use at exit: 7,028,898 bytes in 129,440 blocks. ==10403== malloc/free: 325,184 allocs, 195,744 frees, 21,303,514 bytes allocated. ==10403== For counts of detected errors, rerun with: -v
==10403== searching for pointers to 129,440 not-freed blocks. ==10403== checked 7,214,984 bytes.
==10403==
==10403== LEAK SUMMARY:
==10403== definitely lost: 4,657 bytes in 118 blocks.
==10403== possibly lost: 216 bytes in 13 blocks.
==10403== still reachable: 7,024,025 bytes in 129,309 blocks.
==10403== suppressed: 0 bytes in 0 blocks.
==10403== Use --leak-check=full to see details of leaked memory.

===========================================================================

subversion/libsvn_ra_svn/marshal.c:
[...]
280 static svn_error_t *readbuf_getchar(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
281 char *result)
282 {
283 if (conn->read_ptr == conn->read_end)
284 SVN_ERR(readbuf_fill(conn, pool));
285 *result = *conn->read_ptr++; <-------- SEGFAULT happens here
286 return SVN_NO_ERROR;
287 }

===========================================================================

gdb backtrace:

r54 = f80e8d0ad785cae5a4abfb1fdd04b31167553ab0 (trunk)

        D       collector/src/testCollector.h
        M       collector/src/rcvIpfix.h
        M       collector/src/rcvMessage.c
        M       collector/src/common.c
        M       collector/src/rcvIpfix.c
        M       collector/src/common.h

r55 = 3fddc1de138e9457385ff43111bcaf6f82884525 (trunk)

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1210452288 (LWP 17426)] 0xb745f0a6 in readbuf_getchar (conn=0x877bf78, pool=0x88a6178,

    result=0xbfea011f "\bL:F�L:F�X\001�\006F�x�w\bxa\212\bD\001�230��x�w\b�\212\b�F�\002")
    at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra_svn/marshal.c:285
285       *result = *conn->read_ptr++;
(gdb) bt
#0  0xb745f0a6 in readbuf_getchar (conn=0x877bf78, pool=0x88a6178, 
    result=0xbfea011f "\bL:F�L:F�X\001�\006F�x�w\bxa\212\bD\001�230��x�w\b�\212\b�F�\002")
    at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra_svn/marshal.c:285
#1  0xb745f0e7 in readbuf_getchar_skip_whitespace (conn=0x877bf78, pool=0x88a6178, 
    result=0xbfea011f "\bL:F�L:F�X\001�\006F�x�w\bxa\212\bD\001�230��x�w\b�\212\b�F�\002")
    at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra_svn/marshal.c:294
#2  0xb74600f4 in svn_ra_svn_read_item (conn=0x877bf78, pool=0x88a6178, item=0xbfea0144)
    at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra_svn/marshal.c:621
#3  0xb7460629 in svn_ra_svn_read_tuple (conn=0x877bf78, pool=0x88a6178, fmt=0xb7462607 "wl")
    at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra_svn/marshal.c:741
#4  0xb7460907 in svn_ra_svn_read_cmd_response (conn=0x877bf78, pool=0x88a6178, fmt=0xb7461372 "lc")
    at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra_svn/marshal.c:799
#5  0xb745381e in handle_auth_request (sess=0x877e1e8, pool=0x88a6178)
    at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra_svn/client.c:346
#6  0xb74562b2 in ra_svn_check_path (session=0x8778090, path=0x8899d48 "tags/collector-orig", rev=56, kind=0xbfea02c8, pool=0x88a6178)
    at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra_svn/client.c:1284
#7  0xb7495fd8 in svn_ra_check_path (session=0x8778090, path=0x8899d48 "tags/collector-orig", revision=56, kind=0xbfea02c8, 
    pool=0x88a6178) at /tmp/buildd/subversion-1.4.3dfsg1/subversion/libsvn_ra/ra_loader.c:564

#8 0xb74c2c94 in _wrap_svn_ra_check_path (my_perl=0x814e008, cv=0x85e1a94) at svn_ra.c:6019 #9 0x080bdad1 in Perl_pp_entersub ()
#10 0x080bc3a9 in Perl_runops_standard ()
#11 0x08063a1b in perl_run ()
#12 0x0805ffd1 in main ()
(gdb)

I'm a little lost in debuging this any further. So if anyone could give me some advice ... feel free to contact me by mail or in #git (nickname siprbaum)

-Peter

My system is debian etch with backported subversion + patch in [2] and git from debian unstable/experimental

ii  git-core                        1.5.1.3-1
ii  git-svn                         1.5.1.3-1
ii  libsvn-perl                     1.4.3dfsg1-1
ii  libsvn1                         1.4.3dfsg1-1
ii  subversion                      1.4.3dfsg1-1

[1]: http://wwwcip.informatik.uni-erlangen.de/~siprbaum/git-svn-segfault.txt
[2]: http://svn.haxx.se/dev/archive-2007-01/0936.shtml

#9 lore raw
Quoted 10 lines · Peter Baumann
Quoted 8 lines · Steven Grimm

I expect this is really a libsvn bug, but git-svn triggers it, so I'm hoping someone else has run into and solved it, or at least that someone can reproduce it.

If I try to clone the "memcached" public repository with the command line

git-svn clone --branches=branches --trunk=trunk
http://code.sixapart.com/svn/memcached

Quoted 7 lines

I'm getting segfaults in git-svn, too.

This command segfaults reproducably in r55 while running

	git svn clone svn://svn.berlios.de/vermont vermont \
		-T trunk -b branches -t tags

Both repositories seem to be cloning fine after the patch here:

http://permalink.gmane.org/gmane.comp.version-control.git/47128

I really don't know what's going on with libsvn, either :(

Signature · 1 line
Eric Wong
#10 lore raw

I can confirm that the patch fixes the segfault for me too. Thanks!

-Steve

#11 lore raw
Quoted 4 lines · Steven Grimm

I can confirm that the patch fixes the segfault for me too. Thanks!

-Steve

I can (hopefully) confirm this, too.

-Peter

Side Note:

I tried it yesterday and got a message which
looks something alike "connection closed ..." and after continuing the import I got an segfault. But as I couldn't reproduce this today, it seems that it was just a flacky connection and after the closed connection the repo was just in an inconsistent state.

I'll propably try to import this repo a few more times, just to check if it is really fixed.