Bug 307328

Summary: Patience crash on selection of "New Game"
Product: [Unmaintained] kdelibs Reporter: Peter Hillier-Brook <phb>
Component: kshareddatacacheAssignee: kdelibs bugs <kdelibs-bugs>
Status: RESOLVED WORKSFORME    
Severity: crash CC: cfeck, kde-games-bugs, mpyne
Priority: NOR    
Version: 4.8.5   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Peter Hillier-Brook 2012-09-24 16:53:49 UTC
Application: kpat (3.6)
KDE Platform Version: 4.8.5 (4.8.5)
Qt Version: 4.8.1
Operating System: Linux 3.2.0-31-generic x86_64
Distribution: Ubuntu 12.04.1 LTS

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

I had just selected a new game after successful conclusion of "Spider"

-- Backtrace:
Application: KPatience (kpat), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fa66c2d2780 (LWP 9816))]

Thread 2 (Thread 0x7fa65807e700 (LWP 9817)):
#0  0x00007fa668c81b03 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007fa664c78036 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fa664c78164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007fa66a3ca426 in QEventDispatcherGlib::processEvents (this=0x7fa6500008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#4  0x00007fa66a399c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007fa66a399ed7 in QEventLoop::exec (this=0x7fa65807ddd0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007fa66a298fa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#7  0x00007fa66a3799ff in QInotifyFileSystemWatcherEngine::run (this=0x1e20870) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007fa66a29bfcb in QThreadPrivate::start (arg=0x1e20870) at thread/qthread_unix.cpp:298
#9  0x00007fa66553ce9a in start_thread (arg=0x7fa65807e700) at pthread_create.c:308
#10 0x00007fa668c8d4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fa66c2d2780 (LWP 9816)):
[KCrash Handler]
#6  0x00007fa66a92fd55 in lock (this=<optimized out>) at ../../kdecore/util/kshareddatacache.cpp:1231
#7  KSharedDataCache::Private::CacheLocker::cautiousLock (this=0x7fff5df9e220) at ../../kdecore/util/kshareddatacache.cpp:1255
#8  0x00007fa66a9308e0 in KSharedDataCache::Private::CacheLocker::CacheLocker (this=0x7fff5df9e220, _d=<optimized out>) at ../../kdecore/util/kshareddatacache.cpp:1278
#9  0x00007fa66a929ee6 in KSharedDataCache::find (this=0x1f3e230, key=..., destination=0x7fff5df9e290) at ../../kdecore/util/kshareddatacache.cpp:1630
#10 0x00007fa66ae658af in KImageCache::findPixmap (this=0x1f3e230, key=..., destination=0x1f6b258) at ../../kdeui/util/kimagecache.cpp:150
#11 0x00007fa66bed767a in ?? () from /usr/lib/libkcardgame.so
#12 0x00007fa66bed7870 in KAbstractCardDeck::cardPixmap(unsigned int, bool) () from /usr/lib/libkcardgame.so
#13 0x00007fa66bed9ea4 in KCard::paint(QPainter*, QStyleOptionGraphicsItem const*, QWidget*) () from /usr/lib/libkcardgame.so
#14 0x00007fa669d3d8a9 in QGraphicsScenePrivate::draw (this=0x246e0a0, item=0x2ed18e0, painter=0x7fff5df9f070, viewTransform=0x7fff5df9ed40, transformPtr=0x7fff5df9e810, exposedRegion=0x1c39b78, widget=0x1c3dad0, opacity=1, effectTransform=0x0, wasDirtyParentSceneTransform=true, drawItem=true) at graphicsview/qgraphicsscene.cpp:4964
#15 0x00007fa669d3e3d5 in QGraphicsScenePrivate::drawSubtreeRecursive (this=0x246e0a0, item=0x2ed18e0, painter=0x7fff5df9f070, viewTransform=0x7fff5df9ed40, exposedRegion=0x1c39b78, widget=0x1c3dad0, parentOpacity=<optimized out>, effectTransform=0x0) at graphicsview/qgraphicsscene.cpp:4857
#16 0x00007fa669d3ebf1 in QGraphicsScenePrivate::drawItems (this=0x246e0a0, painter=0x7fff5df9f070, viewTransform=0x7fff5df9ed40, exposedRegion=0x1c39b78, widget=0x1c3dad0) at graphicsview/qgraphicsscene.cpp:4739
#17 0x00007fa669d57870 in QGraphicsView::paintEvent (this=<optimized out>, event=<optimized out>) at graphicsview/qgraphicsview.cpp:3471
#18 0x00007fa66976e0f6 in QWidget::event (this=0x1c39690, event=0x7fff5df9fa10) at kernel/qwidget.cpp:8508
#19 0x00007fa669b2e3b6 in QFrame::event (this=0x1c39690, e=0x7fff5df9fa10) at widgets/qframe.cpp:557
#20 0x00007fa669d58b2b in QGraphicsView::viewportEvent (this=0x1c39690, event=0x7fff5df9fa10) at graphicsview/qgraphicsview.cpp:2866
#21 0x00007fa66a39b028 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0x1c3dad0, event=0x7fff5df9fa10) at kernel/qcoreapplication.cpp:986
#22 0x00007fa66971d85f in notify_helper (e=0x7fff5df9fa10, receiver=0x1c3dad0, this=0x1ad0a50) at kernel/qapplication.cpp:4555
#23 QApplicationPrivate::notify_helper (this=0x1ad0a50, receiver=0x1c3dad0, e=0x7fff5df9fa10) at kernel/qapplication.cpp:4531
#24 0x00007fa669722713 in QApplication::notify (this=0x7fff5dfa2150, receiver=0x1c3dad0, e=0x7fff5df9fa10) at kernel/qapplication.cpp:4420
#25 0x00007fa66ae003f6 in KApplication::notify (this=0x7fff5dfa2150, receiver=0x1c3dad0, event=0x7fff5df9fa10) at ../../kdeui/kernel/kapplication.cpp:311
#26 0x00007fa66a39ae9c in QCoreApplication::notifyInternal (this=0x7fff5dfa2150, receiver=0x1c3dad0, event=0x7fff5df9fa10) at kernel/qcoreapplication.cpp:876
#27 0x00007fa669769d96 in sendSpontaneousEvent (event=0x7fff5df9fa10, receiver=0x1c3dad0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234
#28 QWidgetPrivate::drawWidget (this=0x1c3db00, pdev=0x1e45370, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x1ccec50) at kernel/qwidget.cpp:5585
#29 0x00007fa66976aa0f in QWidgetPrivate::paintSiblingsRecursive (this=0x1c396f0, pdev=0x1e45370, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x1ccec50) at kernel/qwidget.cpp:5794
#30 0x00007fa669769acc in QWidgetPrivate::drawWidget (this=0x1c396f0, pdev=0x1e45370, rgn=..., offset=..., flags=<optimized out>, sharedPainter=0x0, backingStore=0x1ccec50) at kernel/qwidget.cpp:5638
#31 0x00007fa66976aa0f in QWidgetPrivate::paintSiblingsRecursive (this=0x1b83740, pdev=0x1e45370, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x1ccec50) at kernel/qwidget.cpp:5794
#32 0x00007fa66976a797 in QWidgetPrivate::paintSiblingsRecursive (this=0x1b83740, pdev=0x1e45370, siblings=..., index=10, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x1ccec50) at kernel/qwidget.cpp:5781
#33 0x00007fa66976a797 in QWidgetPrivate::paintSiblingsRecursive (this=0x1b83740, pdev=0x1e45370, siblings=..., index=18, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x1ccec50) at kernel/qwidget.cpp:5781
#34 0x00007fa669769acc in QWidgetPrivate::drawWidget (this=0x1b83740, pdev=0x1e45370, rgn=..., offset=..., flags=<optimized out>, sharedPainter=0x0, backingStore=0x1ccec50) at kernel/qwidget.cpp:5638
#35 0x00007fa66993ab58 in QWidgetBackingStore::sync (this=0x1ccec50) at painting/qbackingstore.cpp:1373
#36 0x00007fa669760ac0 in QWidgetPrivate::syncBackingStore (this=0x1b83740) at kernel/qwidget.cpp:1891
#37 0x00007fa66976e60c in QWidget::event (this=0x1b835f0, event=0x1f676d0) at kernel/qwidget.cpp:8655
#38 0x00007fa669b47c4b in QMainWindow::event (this=0x1b835f0, event=0x1f676d0) at widgets/qmainwindow.cpp:1478
#39 0x00007fa66aefc378 in KXmlGuiWindow::event (this=0x1b835f0, ev=0x1f676d0) at ../../kdeui/xmlgui/kxmlguiwindow.cpp:126
#40 0x00007fa66971d894 in notify_helper (e=0x1f676d0, receiver=0x1b835f0, this=0x1ad0a50) at kernel/qapplication.cpp:4559
#41 QApplicationPrivate::notify_helper (this=0x1ad0a50, receiver=0x1b835f0, e=0x1f676d0) at kernel/qapplication.cpp:4531
#42 0x00007fa669722713 in QApplication::notify (this=0x7fff5dfa2150, receiver=0x1b835f0, e=0x1f676d0) at kernel/qapplication.cpp:4420
#43 0x00007fa66ae003f6 in KApplication::notify (this=0x7fff5dfa2150, receiver=0x1b835f0, event=0x1f676d0) at ../../kdeui/kernel/kapplication.cpp:311
#44 0x00007fa66a39ae9c in QCoreApplication::notifyInternal (this=0x7fff5dfa2150, receiver=0x1b835f0, event=0x1f676d0) at kernel/qcoreapplication.cpp:876
#45 0x00007fa66a39ec6a in sendEvent (event=0x1f676d0, receiver=0x1b835f0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#46 QCoreApplicationPrivate::sendPostedEvents (receiver=0x1b835f0, event_type=77, data=0x1a85ff0) at kernel/qcoreapplication.cpp:1500
#47 0x00007fa669d29f8a in dispatchPendingUpdateRequests (this=0x1c396f0) at ../../include/QtGui/private/../../../src/gui/graphicsview/qgraphicsview_p.h:200
#48 QGraphicsScenePrivate::_q_emitUpdated (this=0x246e0a0) at graphicsview/qgraphicsscene.cpp:390
#49 0x00007fa669d33be9 in qt_static_metacall (_a=<optimized out>, _id=<optimized out>, _o=<optimized out>, _c=<optimized out>) at .moc/release-shared/moc_qgraphicsscene.cpp:105
#50 QGraphicsScene::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/release-shared/moc_qgraphicsscene.cpp:86
#51 0x00007fa66a3b4446 in QObject::event (this=0x2826b50, e=<optimized out>) at kernel/qobject.cpp:1195
#52 0x00007fa669d3a5d9 in QGraphicsScene::event (this=0x2826b50, event=0x1f75410) at graphicsview/qgraphicsscene.cpp:3565
#53 0x00007fa66971d894 in notify_helper (e=0x1f75410, receiver=0x2826b50, this=0x1ad0a50) at kernel/qapplication.cpp:4559
#54 QApplicationPrivate::notify_helper (this=0x1ad0a50, receiver=0x2826b50, e=0x1f75410) at kernel/qapplication.cpp:4531
#55 0x00007fa669722713 in QApplication::notify (this=0x7fff5dfa2150, receiver=0x2826b50, e=0x1f75410) at kernel/qapplication.cpp:4420
#56 0x00007fa66ae003f6 in KApplication::notify (this=0x7fff5dfa2150, receiver=0x2826b50, event=0x1f75410) at ../../kdeui/kernel/kapplication.cpp:311
#57 0x00007fa66a39ae9c in QCoreApplication::notifyInternal (this=0x7fff5dfa2150, receiver=0x2826b50, event=0x1f75410) at kernel/qcoreapplication.cpp:876
#58 0x00007fa66a39ec6a in sendEvent (event=0x1f75410, receiver=0x2826b50) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#59 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x1a85ff0) at kernel/qcoreapplication.cpp:1500
#60 0x00007fa66a3c9f93 in sendPostedEvents () at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:236
#61 postEventSourceDispatch (s=<optimized out>) at kernel/qeventdispatcher_glib.cpp:279
#62 0x00007fa664c77d53 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#63 0x00007fa664c780a0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#64 0x00007fa664c78164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#65 0x00007fa66a3ca3bf in QEventDispatcherGlib::processEvents (this=0x1a874b0, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#66 0x00007fa6697c5d5e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#67 0x00007fa66a399c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#68 0x00007fa66a399ed7 in QEventLoop::exec (this=0x7fff5dfa2040, flags=...) at kernel/qeventloop.cpp:204
#69 0x00007fa66a39ef67 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148
#70 0x00000000004189ea in ?? ()
#71 0x00007fa668bbc76d in __libc_start_main (main=0x4168e0, argc=3, ubp_av=0x7fff5dfa2cd8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff5dfa2cc8) at libc-start.c:226
#72 0x0000000000419349 in _start ()

Possible duplicates by query: bug 303310, bug 284770.

Reported using DrKonqi
Comment 1 Michael Pyne 2012-09-25 02:34:00 UTC
This should (hopefully) be fixed in KDE Platform 4.9, where KSharedDataCache takes a lot of extra pain to verify the data being used is mapped to a valid region of memory (this change was too intrusive to backport for 4.8 series).

In the meantime a good workaround would be to find your KDE cache directory by running "kde4-config --path cache".

In that directory will be a bunch of kgamerenderer* directories, each containing *.kcache files. Remove those files (using Dolphin or the 'rm' command) and restart KPat and it should work. You may also have to do the same thing with the libkcardgame-themes directory.

If you just want to run a single command, try
"find $(kde4-config --path cache) -name '*.kcache' -exec rm -i {} + \;" (all characters in the double-quotes are significant, you would want to copy-paste to Konsole).

This command runs the "find" program under the KDE cache directory to find all "*.kcache" files, and run the "rm -i" command on them all. The -i option to "rm" makes it prompt for each file being removed.

If you find that you still experience crashes in a KDE 4.9 (or later) release please re-open if it is this bug, or open a separate bug otherwise. Thanks!
Comment 2 Peter Hillier-Brook 2012-09-25 12:35:31 UTC
On 25/09/12 03:34, Michael Pyne wrote:
> find $(kde4-config --path cache) -name '*.kcache' -exec rm -i {} + \;

Well that didn't work so I'm working my way through the "find" syntax to 
get it right. This is not a major problem for me and I'm just interested 
in getting the command correctly expressed. As for the bug, it's only a 
game and it still works most of the time. ;-)

phb@Caesar:~$ find $(kde4-config --path cache) -name '*.kcache' -exec rm 
-i {} + \;
find: paths must precede expression: ;
Usage: find [-H] [-L] [-P] [-Olevel] [-D 
help|tree|search|stat|rates|opt|exec] [path...] [expression]
Comment 3 Christoph Feck 2012-09-25 19:16:10 UTC
Remove the '+' near the end:

find $(kde4-config --path cache) -name '*.kcache' -exec rm -i {} \;
Comment 4 Peter Hillier-Brook 2012-09-25 20:36:49 UTC
On 25/09/12 20:16, Christoph Feck wrote:
> find $(kde4-config --path cache) -name '*.kcache' -exec rm -i {} \;

Thanks for that. I was hoping to work it out for myself, but you've 
saved me the time and effort.

Peter HB