When quitting amarok, or when logging out of session, amarok crashes. Using gdb, I found that crash is caused by passing a NULL pointer as the first argument to XFreePixmap in the function DialogShadows::Private::freeX11Pixmaps() Reproducible: Always Steps to Reproduce: 1. Start amarok 2. Select Quit from menu 3. Actual Results: Amarok crashes Expected Results: Amarok should quit without crashing Application: Amarok (amarok), signal: Segmentation fault Using host libthread_db library "/lib64/libthread_db.so.1". [Current thread is 1 (Thread 0x7f9819a967c0 (LWP 23781))] Thread 8 (Thread 0x7f97e6654700 (LWP 23786)): #0 0x00007f980e1922f2 in g_main_context_iterate.isra.24 () from /usr/lib64/libglib-2.0.so.0 #1 0x00007f980e192434 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f9816ca59b6 in QEventDispatcherGlib::processEvents (this=0x7f97e0000900, flags=...) at kernel/qeventdispatcher_glib.cpp:426 #3 0x00007f9816c7625f in QEventLoop::processEvents (this=this@entry=0x7f97e6653d90, flags=...) at kernel/qeventloop.cpp:149 #4 0x00007f9816c764e8 in QEventLoop::exec (this=this@entry=0x7f97e6653d90, flags=...) at kernel/qeventloop.cpp:204 #5 0x00007f9816b783b0 in QThread::exec (this=this@entry=0x23fdf60) at thread/qthread.cpp:550 #6 0x00007f9816c56c2f in QInotifyFileSystemWatcherEngine::run (this=0x23fdf60) at io/qfilesystemwatcher_inotify.cpp:256 #7 0x00007f9816b7b33c in QThreadPrivate::start (arg=0x23fdf60) at thread/qthread_unix.cpp:338 #8 0x00007f9813710eae in start_thread () from /lib64/libpthread.so.0 #9 0x00007f981630efed in clone () from /lib64/libc.so.6 Thread 7 (Thread 0x7f97e4b64700 (LWP 23787)): #0 0x00007f9813714a94 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f9816b7b89b in wait (time=18446744073709551615, this=0x2a23690) at thread/qwaitcondition_unix.cpp:86 #2 QWaitCondition::wait (this=this@entry=0x2a23568, mutex=0x1e88f30, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158 #3 0x00007f9812a62ac1 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2a23540, th=0x1eb5af0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WeaverImpl.cpp:365 #4 0x00007f9812a653cb in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x1eb5af0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:71 #5 0x00007f9812a640bf in ThreadWeaver::ThreadRunHelper::run (this=this@entry=0x7f97e4b63dc0, parent=0x2a23540, th=th@entry=0x1eb5af0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/Thread.cpp:87 #6 0x00007f9812a6414b in ThreadWeaver::Thread::run (this=0x1eb5af0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/Thread.cpp:142 #7 0x00007f9816b7b33c in QThreadPrivate::start (arg=0x1eb5af0) at thread/qthread_unix.cpp:338 #8 0x00007f9813710eae in start_thread () from /lib64/libpthread.so.0 #9 0x00007f981630efed in clone () from /lib64/libc.so.6 Thread 6 (Thread 0x7f97dffff700 (LWP 23788)): #0 0x00007f9813714a94 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f9816b7b89b in wait (time=18446744073709551615, this=0x2a23690) at thread/qwaitcondition_unix.cpp:86 #2 QWaitCondition::wait (this=this@entry=0x2a23568, mutex=0x1e88f30, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158 #3 0x00007f9812a62ac1 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2a23540, th=0x1d12190) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WeaverImpl.cpp:365 #4 0x00007f9812a653cb in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x1d12190) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:71 #5 0x00007f9812a653e4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x1d12190) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:74 #6 0x00007f9812a653e4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x1d12190) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:74 #7 0x00007f9812a653e4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x1d12190) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:74 #8 0x00007f9812a640bf in ThreadWeaver::ThreadRunHelper::run (this=this@entry=0x7f97dfffedc0, parent=0x2a23540, th=th@entry=0x1d12190) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/Thread.cpp:87 #9 0x00007f9812a6414b in ThreadWeaver::Thread::run (this=0x1d12190) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/Thread.cpp:142 #10 0x00007f9816b7b33c in QThreadPrivate::start (arg=0x1d12190) at thread/qthread_unix.cpp:338 #11 0x00007f9813710eae in start_thread () from /lib64/libpthread.so.0 #12 0x00007f981630efed in clone () from /lib64/libc.so.6 Thread 5 (Thread 0x7f97df7fe700 (LWP 23789)): #0 0x00007f9813714a94 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f9816b7b89b in wait (time=18446744073709551615, this=0x2a23690) at thread/qwaitcondition_unix.cpp:86 #2 QWaitCondition::wait (this=this@entry=0x2a23568, mutex=0x1e88f30, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158 #3 0x00007f9812a62ac1 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2a23540, th=0x2a3b7d0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WeaverImpl.cpp:365 #4 0x00007f9812a653cb in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x2a3b7d0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:71 #5 0x00007f9812a653e4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x2a3b7d0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:74 #6 0x00007f9812a653e4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x2a3b7d0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:74 #7 0x00007f9812a640bf in ThreadWeaver::ThreadRunHelper::run (this=this@entry=0x7f97df7fddc0, parent=0x2a23540, th=th@entry=0x2a3b7d0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/Thread.cpp:87 #8 0x00007f9812a6414b in ThreadWeaver::Thread::run (this=0x2a3b7d0) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/Thread.cpp:142 #9 0x00007f9816b7b33c in QThreadPrivate::start (arg=0x2a3b7d0) at thread/qthread_unix.cpp:338 #10 0x00007f9813710eae in start_thread () from /lib64/libpthread.so.0 #11 0x00007f981630efed in clone () from /lib64/libc.so.6 Thread 4 (Thread 0x7f97deffd700 (LWP 23790)): #0 0x00007f9813714a94 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f9816b7b89b in wait (time=18446744073709551615, this=0x2a23690) at thread/qwaitcondition_unix.cpp:86 #2 QWaitCondition::wait (this=this@entry=0x2a23568, mutex=0x1e88f30, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158 #3 0x00007f9812a62ac1 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2a23540, th=0x1cfa170) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WeaverImpl.cpp:365 #4 0x00007f9812a653cb in ThreadWeaver::WorkingHardState::applyForWork (this=0x1cf58d0, th=0x1cfa170) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/WorkingHardState.cpp:71 #5 0x00007f9812a640bf in ThreadWeaver::ThreadRunHelper::run (this=this@entry=0x7f97deffcdc0, parent=0x2a23540, th=th@entry=0x1cfa170) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/Thread.cpp:87 #6 0x00007f9812a6414b in ThreadWeaver::Thread::run (this=0x1cfa170) at /home/simon/build/kde4/kdelibs-4.10.3/threadweaver/Weaver/Thread.cpp:142 #7 0x00007f9816b7b33c in QThreadPrivate::start (arg=0x1cfa170) at thread/qthread_unix.cpp:338 #8 0x00007f9813710eae in start_thread () from /lib64/libpthread.so.0 #9 0x00007f981630efed in clone () from /lib64/libc.so.6 Thread 3 (Thread 0x7f97dd761700 (LWP 23791)): #0 0x00007f9813714a94 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f98095f27dd in WTF::TCMalloc_PageHeap::scavengerThread() () from /usr/lib64/qt/lib/libQtWebKit.so.4 #2 0x00007f98095f28e9 in WTF::TCMalloc_PageHeap::runScavengerThread(void*) () from /usr/lib64/qt/lib/libQtWebKit.so.4 #3 0x00007f9813710eae in start_thread () from /lib64/libpthread.so.0 #4 0x00007f981630efed in clone () from /lib64/libc.so.6 Thread 2 (Thread 0x7f97d75ea700 (LWP 23795)): #0 0x00007f98162d756d in nanosleep () from /lib64/libc.so.6 #1 0x00007f98162d7411 in sleep () from /lib64/libc.so.6 #2 0x00007f9811a86bb2 in QTWTF::TCMalloc_PageHeap::scavengerThread (this=0x7f9811d946a0 <QTWTF::pageheap_memory>) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2363 #3 0x00007f9811a86c39 in QTWTF::TCMalloc_PageHeap::runScavengerThread (context=<optimized out>) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1464 #4 0x00007f9813710eae in start_thread () from /lib64/libpthread.so.0 #5 0x00007f981630efed in clone () from /lib64/libc.so.6 Thread 1 (Thread 0x7f9819a967c0 (LWP 23781)): [KCrash Handler] #6 0x00007f98181b9e8c in XFreePixmap () from /usr/lib64/libX11.so.6 #7 0x00007f9811f1fffb in DialogShadows::Private::freeX11Pixmaps (this=this@entry=0x26dc730) at /home/simon/build/kde4/kdelibs-4.10.3/plasma/private/dialogshadows.cpp:345 #8 0x00007f9811f222f8 in ~Private (this=0x26dc730, __in_chrg=<optimized out>) at /home/simon/build/kde4/kdelibs-4.10.3/plasma/private/dialogshadows.cpp:46 #9 DialogShadows::~DialogShadows (this=0x26dbfb0, __in_chrg=<optimized out>) at /home/simon/build/kde4/kdelibs-4.10.3/plasma/private/dialogshadows.cpp:97 #10 0x00007f9811f223c9 in DialogShadows::~DialogShadows (this=0x26dbfb0, __in_chrg=<optimized out>) at /home/simon/build/kde4/kdelibs-4.10.3/plasma/private/dialogshadows.cpp:98 #11 0x00007f9816c89b32 in QObjectPrivate::deleteChildren (this=this@entry=0x26dc590) at kernel/qobject.cpp:1907 #12 0x00007f9816c8d9b6 in QObject::~QObject (this=0x2a2e7e0, __in_chrg=<optimized out>) at kernel/qobject.cpp:926 #13 0x00007f9811f83c87 in ~ToolTipManagerSingleton (this=0x2a2e7e0, __in_chrg=<optimized out>) at /home/simon/build/kde4/kdelibs-4.10.3/plasma/tooltipmanager.cpp:109 #14 destroy () at /home/simon/build/kde4/kdelibs-4.10.3/plasma/tooltipmanager.cpp:117 #15 0x00007f9816252c71 in __run_exit_handlers () from /lib64/libc.so.6 #16 0x00007f9816252cf5 in exit () from /lib64/libc.so.6 #17 0x00007f981623aa9c in __libc_start_main () from /lib64/libc.so.6 #18 0x000000000040bb69 in _start () at ../sysdeps/x86_64/elf/start.S:113
Created attachment 79806 [details] Patch that fixes problem At the start of DialogShadows::Private::freeX11Pixmaps(), return if QX11Info::display() returns a NULL pointer
The patch matches what is proposed at bug 319137. *** This bug has been marked as a duplicate of bug 319137 ***