FS#60005 - [git] git svn crashes when using kwallet password storage backed

Attached to Project: Arch Linux
Opened by Daniel Schopf (dschopf) - Monday, 10 September 2018, 07:05 GMT
Last edited by Antonio Rojas (arojas) - Saturday, 04 May 2019, 12:10 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Antonio Rojas (arojas)
Christian Hesse (eworm)
Architecture x86_64
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No


Running "git svn rebase" crashes reproducibly with the following error message when using kwallet:

$ git svn rebase
org.kde.kwindowsystem: Could not find any platform plugin
Current branch master is up to date.
error: git-svn died of signal 11

The command is executed properly and commits are also added to the local git clone.
But when cleaning up afterwards the git-svn script produces a segfault.

Additional info on used package versions:
* git 2.18.0-1
* perl 5.28.0-1
* kcoreaddons 5.50.0-1
* kwallet 5.50.0-1

Steps to reproduce:
Clone a git repository from an SVN server and set kwallet as password storage backed.

Calling "git svn rebase" will now always generate a segfault:
[ 6470.589903] git-svn[1291]: segfault at 7f25e8ab8f80 ip 00007f25e897a3e6 sp 00007ffd8c670d70 error 4 in libKF5CoreAddons.so.5.50.0[7f25e8972000+5e000]
[ 6470.589908] Code: f8 ff 74 06 f0 83 2f 01 74 7a 48 8b 7b 08 8b 07 85 c0 0f 84 92 00 00 00 83 f8 ff 74 0a f0 83 2f 01 0f 84 25 02 00 00 48 8b 03 <8b> 10 85 d2 74 24 83 fa ff 74 06 f0 83 28 01 74 19 48 8b 7d 00 48
[ 6470.590013] audit: type=1701 audit(1536562099.754:82): auid=1000 uid=1000 gid=100 ses=6 pid=1291 comm="git-svn" exe="/usr/bin/perl" sig=11 res=1
[ 6571.883279] audit: type=1006 audit(1536562201.046:83): pid=5775 uid=0 old-auid=4294967295 auid=1000 tty=(none) old-ses=4294967295 ses=29 res=1

Here is the backtrace from gdb after building kcoreaddons with additional debug info:

Core was generated by `/usr/bin/perl /usr/lib/git-core/git-svn rebase'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007fac336b63e6 in std::__atomic_base<int>::load (__m=std::memory_order_relaxed, this=0x7fac337f4f80) at /usr/include/c++/8.2.1/bits/atomic_base.h:390
390 load(memory_order __m = memory_order_seq_cst) const noexcept
(gdb) bt
#0 0x00007fac336b63e6 in std::__atomic_base<int>::load(std::memory_order) const (__m=std::memory_order_relaxed, this=0x7fac337f4f80) at /usr/include/c++/8.2.1/bits/atomic_base.h:390
#1 0x00007fac336b63e6 in QAtomicOps<int>::load<int>(std::atomic<int> const&) (_q_value=...) at /usr/include/qt/QtCore/qatomic_cxx11.h:227
#2 0x00007fac336b63e6 in QBasicAtomicInteger<int>::load() const (this=0x7fac337f4f80) at /usr/include/qt/QtCore/qbasicatomic.h:103
#3 0x00007fac336b63e6 in QtPrivate::RefCount::deref() (this=0x7fac337f4f80) at /usr/include/qt/QtCore/qrefcount.h:66
#4 0x00007fac336b63e6 in QString::~QString() (this=0x55e3e37e3da0, __in_chrg=<optimized out>) at /usr/include/qt/QtCore/qstring.h:1130
#5 0x00007fac336b63e6 in KAboutData::Private::~Private() (this=0x55e3e37e3da0, __in_chrg=<optimized out>) at /usr/src/debug/kcoreaddons-5.50.0/src/lib/kaboutdata.cpp:456
#6 0x00007fac336b63e6 in KAboutData::~KAboutData() (this=0x55e3e37e0210, __in_chrg=<optimized out>) at /usr/src/debug/kcoreaddons-5.50.0/src/lib/kaboutdata.cpp:577
#7 0x00007fac336b668e in KAboutDataRegistry::~KAboutDataRegistry() (this=0x7fac3372c060 <(anonymous namespace)::Q_QGS_s_registry::innerFunction()::holder>, __in_chrg=<optimized out>)
at /usr/src/debug/kcoreaddons-5.50.0/src/lib/kaboutdata.cpp:1036
#8 0x00007fac336b668e in (anonymous namespace)::Q_QGS_s_registry::Holder::~Holder() (this=0x7fac3372c060 <(anonymous namespace)::Q_QGS_s_registry::innerFunction()::holder>, __in_chrg=<optimized out>)
at /usr/src/debug/kcoreaddons-5.50.0/src/lib/kaboutdata.cpp:1036
#9 0x00007fac3bdbc45c in __run_exit_handlers () at /usr/lib/libc.so.6
#10 0x00007fac3bdbc58e in () at /usr/lib/libc.so.6
#11 0x000055e3e1850dba in main ()

This task depends upon

Closed by  Antonio Rojas (arojas)
Saturday, 04 May 2019, 12:10 GMT
Reason for closing:  Upstream
Additional comments about closing:  Not a packaging issue, please report upstream
Comment by Antonio Rojas (arojas) - Thursday, 28 February 2019, 16:23 GMT
Any way to reproduce this without access to a password protected repo?
Comment by Daniel Schopf (dschopf) - Thursday, 28 February 2019, 17:31 GMT
I don't think so.

But I have set up a small password protected server if you want to test.

I can reproduce the issue with the following commands:

$ git svn clone svn:// test
Username: harry
Password: password
$ cd test
$ git svn rebase
Comment by Antonio Rojas (arojas) - Saturday, 06 April 2019, 10:19 GMT
Thanks, I can reproduce. This is certainly not a packaging problem, but it's not clear to me where the problem lies. Since the crash seems to be in the KAboutData::KAboutData destructor, I'd start by reporting this to KDE.