git svn fetch segfault on exit
Hi,
I'm using archlinux with git version 1.8.3.3, svn version 1.8.0 (r1490375) and perl v5.18.0 (built for x86_64-linux-thread-multi)
Every git svn call that involves a fetch produces a segmentation fault on exit (but the operation succeeds).
*** Error in `/usr/bin/perl': double free or corruption (!prev): 0x0000000002ce1ac0 *** ======= Backtrace: =========
/usr/lib/libc.so.6(+0x788ae)[0x7fd4d83798ae] /usr/lib/libc.so.6(+0x79587)[0x7fd4d837a587] /usr/lib/libapr-1.so.0(apr_allocator_destroy+0x1d)[0x7fd4d568e9ad] /usr/lib/libapr-1.so.0(apr_pool_terminate+0x30)[0x7fd4d568f590] /usr/lib/perl5/vendor_perl/auto/SVN/_Core/_Core.so(_wrap_apr_terminate+0x50)[0x7fd4d6886920] /usr/lib/perl5/core_perl/CORE/libperl.so(Perl_pp_entersub+0x571)[0x7fd4d876f821] /usr/lib/perl5/core_perl/CORE/libperl.so(Perl_runops_standard+0x16)[0x7fd4d8767e26] /usr/lib/perl5/core_perl/CORE/libperl.so(Perl_call_sv+0x3b0)[0x7fd4d86f93b0] /usr/lib/perl5/core_perl/CORE/libperl.so(Perl_call_list+0x2c7)[0x7fd4d86fb477] /usr/lib/perl5/core_perl/CORE/libperl.so(perl_destruct+0x1321)[0x7fd4d86fca91] /usr/bin/perl(main+0x111)[0x400e01] /usr/lib/libc.so.6(__libc_start_main+0xf5)[0x7fd4d8322a15] /usr/bin/perl[0x400e71]
This bug has already been reported by others on subversion mailing list and and archlinux bbs:
https://bugs.archlinux.org/task/36070
http://permalink.gmane.org/gmane.comp.version-control.subversion.user/114019
I tried to fix it but the problem is that I know absolutely nothing of perl. Anyway, I noticed that with the modifications bellow (in Git::SVN::Ra::new) the crash does not occur (I do not think it's a real fix though).
usr/share/perl5/vendor_perl/Git/SVN/Ra.pm 2013-07-18 11:16:14.624622422 +0200 renamed from usr/share/perl5/vendor_perl/Git/SVN/Ra.pm.orig 2013-07-18 11:15:23.584625508 +0200 +0 -0
@@ -79,7 +79,6 @@ SVN::_Core::svn_config_ensure($config_dir, undef); my ($baton, $callbacks) =
SVN::Core::auth_open_helper(_auth_providers);
my $config = SVN::Core::config_get_config($config_dir);
- $RA = undef;
my $dont_store_passwords = 1;
my $conf_t = ${$config}{'config'};
{
@@ -108,7 +107,7 @@
config => $config,
pool => SVN::Pool->new,
auth_provider_callbacks => $callbacks);- $RA = bless $self, $class;
+ $self = bless $self, $class;
# Make sure its canonicalized
$self->url($url);
@@ -118,7 +117,7 @@
$self->{cache} = { check_path => { r => 0, data => {} },
get_dir => { r => 0, data => {} } };- return $RA;
+ return $self;
}
sub url {
Jonathan
Quoted 19 lines · Jonathan Lambrechts
Every git svn call that involves a fetch produces a segmentation fault on exit (but the operation succeeds).
*** Error in `/usr/bin/perl': double free or corruption (!prev):
0x0000000002ce1ac0***
======= Backtrace: =========
/usr/lib/libc.so.6(+0x788ae)[0x7fd4d83798ae] /usr/lib/libc.so.6(+0x79587)[0x7fd4d837a587] /usr/lib/libapr-1.so.0(apr_allocator_destroy+0x1d)[0x7fd4d568e9ad] /usr/lib/libapr-1.so.0(apr_pool_terminate+0x30)[0x7fd4d568f590] /usr/lib/perl5/vendor_perl/auto/SVN/_Core/_Core.so(_wrap_apr_terminate+0x50)[0x7fd4d6886920] /usr/lib/perl5/core_perl/CORE/libperl.so(Perl_pp_entersub+0x571)[0x7fd4d876f821] /usr/lib/perl5/core_perl/CORE/libperl.so(Perl_runops_standard+0x16)[0x7fd4d8767e26] /usr/lib/perl5/core_perl/CORE/libperl.so(Perl_call_sv+0x3b0)[0x7fd4d86f93b0] /usr/lib/perl5/core_perl/CORE/libperl.so(Perl_call_list+0x2c7)[0x7fd4d86fb477] /usr/lib/perl5/core_perl/CORE/libperl.so(perl_destruct+0x1321)[0x7fd4d86fca91] /usr/bin/perl(main+0x111)[0x400e01] /usr/lib/libc.so.6(__libc_start_main+0xf5)[0x7fd4d8322a15] /usr/bin/perl[0x400e71]
Can you check if your version of the perl subversion bindings were compiled against the perl and subversion versions that you have installed?
Perl -- as an interpreted language -- is mostly supposed to be safe from such segfaults, and since git-svn is pure perl, the likely culprit is in the bindings or the svn libraries. And the easiest way to get that to break is a version mismatch.
Signature · 2 lines
Thomas Rast
trast@{inf,student}.ethz.chI'm facing the same issue. I'm using git-1.8.4 and subversion 1.8.3 on Ubuntu.
I'm proposing a different modification to Ra.pm:
Jonathan's modifications basically disable the use of $RA. The modifications above ensure that the destructor of $RA is called before doing an apr_terminate().
Best regards, Uli.
--
View this message in context: http://git.661346.n2.nabble.com/git-svn-fetch-segfault-on-exit-tp7592205p7595155.html
Sent from the git mailing list archive at Nabble.com.
Quoted 4 lines
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
Regards,
Evgeny Kotkov
Am 02.09.2013 13:57, schrieb Evgeny Kotkov:
Quoted 9 lines
Quoted 2 lines
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.