Bug 374433 - Crash after canceling archiving into tar.xz
Summary: Crash after canceling archiving into tar.xz
Status: RESOLVED FIXED
Alias: None
Product: ark
Classification: Applications
Component: general (show other bugs)
Version: 16.08.2
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Elvis Angelaccio
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2017-01-01 19:06 UTC by opensuse.lietuviu.kalba
Modified: 2017-01-08 16:16 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 16.12.1


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description opensuse.lietuviu.kalba 2017-01-01 19:06:10 UTC
Application: ark (16.08.2)

Qt Version: 5.6.1
Frameworks Version: 5.26.0
Operating System: Linux 4.4.36-8-default x86_64
Distribution: "openSUSE Leap 42.2"

-- Information about the crash:
- What I was doing when the application crashed:

I started to compress multiple files into tar.xz archive. After canceling (pressing stop button) in information dialog from systray info popup, crash notification appeared

-- Backtrace:
Application: Ark (ark), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
[Current thread is 1 (Thread 0x7f5d6b11e880 (LWP 24870))]

Thread 4 (Thread 0x7f5d44ce4700 (LWP 24873)):
[KCrash Handler]
#6  0x00007f5d672798d7 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
#7  0x00007f5d6727acaa in __GI_abort () at abort.c:78
#8  0x00007f5d6768060d in __gnu_cxx::__verbose_terminate_handler () at ../../../../libstdc++-v3/libsupc++/vterminate.cc:95
#9  0x00007f5d6767e5e6 in __cxxabiv1::__terminate (handler=<optimized out>) at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:47
#10 0x00007f5d6767e631 in std::terminate () at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:57
#11 0x00007f5d6767e848 in __cxxabiv1::__cxa_throw (obj=0x7f5d40005050, tinfo=0x7f5d67961750 <typeinfo for std::bad_alloc>, dest=0x7f5d6767ca60 <std::bad_alloc::~bad_alloc()>) at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:87
#12 0x00007f5d67a06aa2 in qBadAlloc () at global/qglobal.cpp:2979
#13 0x00007f5d67a7efd6 in grow (size=-1073710330) at tools/qlist.cpp:60
#14 QListData::detach_grow (this=this@entry=0x246f440, idx=idx@entry=0x7f5d44ce3a1c, num=num@entry=1) at tools/qlist.cpp:81
#15 0x00007f5d45306580 in QList<QString>::detach_helper_grow (this=this@entry=0x246f440, i=i@entry=2147483647, c=c@entry=1) at /usr/include/qt5/QtCore/qlist.h:746
#16 0x00007f5d45301e57 in QList<QString>::append (t=..., this=0x246f440) at /usr/include/qt5/QtCore/qlist.h:572
#17 QList<QString>::push_back (t=..., this=0x246f440) at /usr/include/qt5/QtCore/qlist.h:351
#18 ReadWriteLibarchivePlugin::writeFile (this=this@entry=0x246f3e0, relativeName=..., arch_writer=arch_writer@entry=0x7f5d40005560) at /usr/src/debug/ark-16.08.2/plugins/libarchive/readwritelibarchiveplugin.cpp:510
#19 0x00007f5d45303ccc in ReadWriteLibarchivePlugin::addFiles (this=0x246f3e0, files=..., options=...) at /usr/src/debug/ark-16.08.2/plugins/libarchive/readwritelibarchiveplugin.cpp:227
#20 0x00007f5d6ad116c7 in Kerfuffle::AddJob::doWork (this=0x23150c0) at /usr/src/debug/ark-16.08.2/kerfuffle/jobs.cpp:456
#21 0x00007f5d6ad0e821 in Kerfuffle::Job::Private::run (this=0x2303db0) at /usr/src/debug/ark-16.08.2/kerfuffle/jobs.cpp:62
#22 0x00007f5d67a1f9e9 in QThreadPrivate::start (arg=0x2303db0) at thread/qthread_unix.cpp:341
#23 0x00007f5d6373c734 in start_thread (arg=0x7f5d44ce4700) at pthread_create.c:334
#24 0x00007f5d6732ed3d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7f5d4ffff700 (LWP 24872)):
#0  0x00007f5d6732649d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f5d63008314 in g_main_context_poll (priority=2147483647, n_fds=1, fds=0x7f5d48003020, timeout=-1, context=0x7f5d48000990) at gmain.c:4135
#2  g_main_context_iterate (context=context@entry=0x7f5d48000990, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3835
#3  0x00007f5d6300842c in g_main_context_iteration (context=0x7f5d48000990, may_block=1) at gmain.c:3901
#4  0x00007f5d67c3232b in QEventDispatcherGlib::processEvents (this=0x7f5d480008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:419
#5  0x00007f5d67bdffdb in QEventLoop::exec (this=this@entry=0x7f5d4fffed20, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007f5d67a1af1a in QThread::exec (this=this@entry=0x7f5d652e5ce0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread.cpp:500
#7  0x00007f5d6507d1d5 in QDBusConnectionManager::run (this=0x7f5d652e5ce0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:189
#8  0x00007f5d67a1f9e9 in QThreadPrivate::start (arg=0x7f5d652e5ce0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:341
#9  0x00007f5d6373c734 in start_thread (arg=0x7f5d4ffff700) at pthread_create.c:334
#10 0x00007f5d6732ed3d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f5d58232700 (LWP 24871)):
#0  0x00007f5d6732649d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f5d608af3c2 in _xcb_conn_wait () from /usr/lib64/libxcb.so.1
#2  0x00007f5d608b110f in xcb_wait_for_event () from /usr/lib64/libxcb.so.1
#3  0x00007f5d5a794839 in QXcbEventReader::run (this=0x21881e0) at qxcbconnection.cpp:1325
#4  0x00007f5d67a1f9e9 in QThreadPrivate::start (arg=0x21881e0) at thread/qthread_unix.cpp:341
#5  0x00007f5d6373c734 in start_thread (arg=0x7f5d58232700) at pthread_create.c:334
#6  0x00007f5d6732ed3d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f5d6b11e880 (LWP 24870)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f5d67a2065b in QWaitConditionPrivate::wait (time=18446744073709551615, this=0x2414ca0) at thread/qwaitcondition_unix.cpp:136
#2  QWaitCondition::wait (this=this@entry=0x225bf30, mutex=mutex@entry=0x225bf10, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:208
#3  0x00007f5d67a1f5e6 in QThread::wait (this=<optimized out>, time=time@entry=18446744073709551615) at thread/qthread_unix.cpp:672
#4  0x00007f5d6ad0e050 in Kerfuffle::Job::~Job (this=0x23150c0, __in_chrg=<optimized out>) at /usr/src/debug/ark-16.08.2/kerfuffle/jobs.cpp:91
#5  0x00007f5d6ad42652 in Kerfuffle::AddJob::~AddJob (this=0x23150c0, __in_chrg=<optimized out>) at /usr/src/debug/ark-16.08.2/kerfuffle/jobs.h:211
#6  Kerfuffle::AddJob::~AddJob (this=0x23150c0, __in_chrg=<optimized out>) at /usr/src/debug/ark-16.08.2/kerfuffle/jobs.h:211
#7  0x00007f5d67c0d1b0 in QObject::event (this=0x23150c0, e=<optimized out>) at kernel/qobject.cpp:1247
#8  0x00007f5d688e8e3c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x23150c0, e=0x22f8ad0) at kernel/qapplication.cpp:3804
#9  0x00007f5d688ed49a in QApplication::notify (this=0x7ffd25bd84a0, receiver=0x23150c0, e=0x22f8ad0) at kernel/qapplication.cpp:3561
#10 0x00007f5d67be1fc5 in QCoreApplication::notifyInternal2 (receiver=0x23150c0, event=event@entry=0x22f8ad0) at kernel/qcoreapplication.cpp:1015
#11 0x00007f5d67be3daa in QCoreApplication::sendEvent (event=0x22f8ad0, receiver=<optimized out>) at kernel/qcoreapplication.h:225
#12 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x216b250) at kernel/qcoreapplication.cpp:1650
#13 0x00007f5d67be4358 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1508
#14 0x00007f5d67c32c83 in postEventSourceDispatch (s=0x21a22c0) at kernel/qeventdispatcher_glib.cpp:270
#15 0x00007f5d63008134 in g_main_dispatch (context=0x7f5d500016f0) at gmain.c:3154
#16 g_main_context_dispatch (context=context@entry=0x7f5d500016f0) at gmain.c:3769
#17 0x00007f5d63008388 in g_main_context_iterate (context=context@entry=0x7f5d500016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
#18 0x00007f5d6300842c in g_main_context_iteration (context=0x7f5d500016f0, may_block=1) at gmain.c:3901
#19 0x00007f5d67c3230c in QEventDispatcherGlib::processEvents (this=0x21d47b0, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#20 0x00007f5d67bdffdb in QEventLoop::exec (this=this@entry=0x7ffd25bd8340, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#21 0x00007f5d67be7ec6 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1285
#22 0x00007f5d6812d70c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1607
#23 0x00007f5d688e6045 in QApplication::exec () at kernel/qapplication.cpp:2979
#24 0x000000000040d368 in main (argc=80, argv=<optimized out>) at /usr/src/debug/ark-16.08.2/app/main.cpp:298

Possible duplicates by query: bug 362651, bug 359090.

Reported using DrKonqi
Comment 1 Elvis Angelaccio 2017-01-07 15:53:35 UTC
Thanks for the report.
Comment 2 Elvis Angelaccio 2017-01-08 16:16:43 UTC
Git commit e777831fe4a7cdb3b41f4be521d6a8531df63147 by Elvis Angelaccio.
Committed on 08/01/2017 at 16:13.
Pushed by elvisangelaccio into branch 'Applications/16.12'.

Properly kill AddToArchive jobs

Both AddToArchive and CreateJob are wrapper jobs, they need to implement
doKill() and call kill() on the actual jobs that are doing the work.
FIXED-IN: 16.12.1

Differential Revision: D4000

M  +10   -5    kerfuffle/addtoarchive.cpp
M  +4    -0    kerfuffle/addtoarchive.h
M  +10   -5    kerfuffle/jobs.cpp
M  +4    -0    kerfuffle/jobs.h
M  +1    -1    plugins/libarchive/libarchiveplugin.cpp

https://commits.kde.org/ark/e777831fe4a7cdb3b41f4be521d6a8531df63147