Bug 170768

Summary: kpat crash (assert failure) in dealer
Product: [Applications] kpat Reporter: Matthew Woehlke <mwoehlke.floss>
Component: generalAssignee: Stephan Kulow <coolo>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: savegame for lazy people :-)

Description Matthew Woehlke 2008-09-09 22:18:03 UTC
Version:            (using Devel)
Compiler:          gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) 
OS:                Linux
Installed from:    Compiled sources

I'm seeing the assert in DealerScene::setWaiting(bool) (dealer.cpp circa 1118) trip occasionally. It happens sometimes in freecell, but *every* time in simple simon, exactly when a run is completed. This is with r859205.

Here's the last snippet of output plus backtrace (from a gdb run):

kpat(14160) DealerScene::stopDemo: "458894" stopDemo 0
kpat(14160) PatienceView::toggleDemo: false
kpat(14160) DealerScene::takeState: clear in takeState
kpat(14160) DealerScene::startAutoDrop: "460764" startAutoDrop
kpat(14160) DealerScene::getSolverHints: getSolverHints
kpat(14160) SimonSolver::translateMove: card 13   3
kpat(14160) DealerScene::setWaiting: setWaiting true   0
kpat(14160) DealerScene::stopAndRestartSolver: stopAndRestartSolver
kpat(14160) DealerScene::stopAndRestartSolver: stopAndRestartSolver
kpat(14160) DealerScene::setWaiting: setWaiting false   1
kpat(14160) DealerScene::stopAndRestartSolver: stopAndRestartSolver
kpat(14160) DealerScene::setWaiting: setWaiting false   0
kpat: /usr/local/src/kde/svn/trunk/kdegames/kpat/dealer.cpp:1119: void DealerScene::setWaiting(bool): Assertion `_waiting > 0 || w' failed.

Program received signal SIGABRT, Aborted.
0x0000003183232215 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install OpenEXR.x86_64 acl.x86_64 attr.x86_64 bzip2.x86_64 dbus.x86_64 e2fsprogs.x86_64 expat.x86_64 fontconfig.x86_64 freetype.x86_64 gamin.x86_64 gcc.x86_64 glib2.x86_64 glibc.x86_64 ilmbase.x86_64 jasper.x86_64 lcms.x86_64 libICE.x86_64 libSM.x86_64 libX11.x86_64 libXau.x86_64 libXcursor.x86_64 libXdmcp.x86_64 libXext.x86_64 libXfixes.x86_64 libXft.x86_64 libXi.x86_64 libXinerama.x86_64 libXpm.x86_64 libXrandr.x86_64 libXrender.x86_64 libXtst.x86_64 libcap.x86_64 libjpeg.x86_64 libmng.x86_64 libpng.x86_64 libselinux.x86_64 libtiff.x86_64libxcb.x86_64 libxml2.x86_64 mesa.x86_64 zlib.x86_64
(gdb) bt
#0  0x0000003183232215 in raise () from /lib64/libc.so.6
#1  0x0000003183233d83 in abort () from /lib64/libc.so.6
#2  0x000000318322b039 in __assert_fail () from /lib64/libc.so.6
#3  0x000000000041dbbe in DealerScene::setWaiting (this=0x27a33f0, w=false) at /usr/local/src/kde/svn/trunk/kdegames/kpat/dealer.cpp:1119
#4  0x00000000004222eb in DealerScene::waitForAutoDrop (this=0x3750, c=0x2e3a510) at /usr/local/src/kde/svn/trunk/kdegames/kpat/dealer.cpp:1298
#5  0x0000000000424819 in DealerScene::qt_metacall (this=0x27a33f0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff8d5c0c00)
    at /var/local/build/kde/svn/trunk/kdegames/kpat/dealer.moc:139
#6  0x0000000000446f3d in Simon::qt_metacall (this=0x3750, _c=14160, _id=6, _a=0xffffffffffffffff) at /var/local/build/kde/svn/trunk/kdegames/kpat/simon.moc:61
#7  0x0000000001454385 in QMetaObject::activate (sender=0x2e3a510, from_signal_index=4, to_signal_index=4, argv=0x7fff8d5c0c00)
    at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qobject.cpp:3013
#8  0x00000000014547fb in QMetaObject::activate (sender=0x2e3a510, m=0x4522a0, local_signal_index=0, argv=0x7fff8d5c0c00)
    at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qobject.cpp:3086
#9  0x000000000041697d in Card::stoped (this=0x3750, _t1=0x2e3a510) at /var/local/build/kde/svn/trunk/kdegames/kpat/card.moc:97
#10 0x000000000041755d in Card::stopAnimation (this=0x2e3a510) at /usr/local/src/kde/svn/trunk/kdegames/kpat/card.cpp:360
#11 0x0000000000417f78 in Card::qt_metacall (this=0x2e3a510, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff8d5c0d20) at /var/local/build/kde/svn/trunk/kdegames/kpat/card.moc:84
#12 0x0000000001454385 in QMetaObject::activate (sender=0x2e6f0d0, from_signal_index=7, to_signal_index=7, argv=0x0) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qobject.cpp:3013
#13 0x00000000014547fb in QMetaObject::activate (sender=0x2e6f0d0, m=0x173d580, local_signal_index=3, argv=0x0) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qobject.cpp:3086
#14 0x000000000148df3c in QTimeLine::finished (this=0x2e6f0d0) at .moc/debug-shared/moc_qtimeline.cpp:169
#15 0x00000000013a9a6c in QTimeLinePrivate::setCurrentTime (this=0x2fe19c0, msecs=560) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/tools/qtimeline.cpp:177
#16 0x00000000013a9af2 in QTimeLine::timerEvent (this=0x2e6f0d0, event=0x7fff8d5c16b0) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/tools/qtimeline.cpp:761
#17 0x000000000145263c in QObject::event (this=0x2e6f0d0, e=0x7fff8d5c16b0) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qobject.cpp:1105
#18 0x00000000058f3fe1 in QApplicationPrivate::notify_helper (this=0x26f15a0, receiver=0x2e6f0d0, e=0x7fff8d5c16b0) at /usr/local/src/kde/svn/trunk/qt-copy/src/gui/kernel/qapplication.cpp:3800
#19 0x00000000058f42fd in QApplication::notify (this=0x7fff8d5c1ae0, receiver=0x2e6f0d0, e=0x7fff8d5c16b0) at /usr/local/src/kde/svn/trunk/qt-copy/src/gui/kernel/qapplication.cpp:3392
#20 0x0000000000976d1b in KApplication::notify (this=0x7fff8d5c1ae0, receiver=0x2e6f0d0, event=0x7fff8d5c16b0) at /usr/local/src/kde/svn/trunk/kdelibs/kdeui/kernel/kapplication.cpp:311
#21 0x000000000143ff2b in QCoreApplication::notifyInternal (this=0x7fff8d5c1ae0, receiver=0x2e6f0d0, event=0x7fff8d5c16b0)
    at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qcoreapplication.cpp:587
#22 0x00000000058f1355 in QCoreApplication::sendEvent (receiver=0x2e6f0d0, event=0x7fff8d5c16b0) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qcoreapplication.h:215
#23 0x0000000001470075 in QTimerInfoList::activateTimers (this=0x26f5cb0) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qeventdispatcher_unix.cpp:563
#24 0x000000000146d8ba in timerSourceDispatch (source=0x26f5c50) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qeventdispatcher_glib.cpp:166
#25 0x00000030ab8374db in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#26 0x00000030ab83acbd in ?? () from /lib64/libglib-2.0.so.0
#27 0x00000030ab83ae7b in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#28 0x000000000146cb16 in QEventDispatcherGlib::processEvents (this=0x26f1530, flags={i = -1923344112}) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qeventdispatcher_glib.cpp:325
#29 0x0000000005992b3f in QGuiEventDispatcherGlib::processEvents (this=0x26f1530, flags={i = -1923344016}) at /usr/local/src/kde/svn/trunk/qt-copy/src/gui/kernel/qguieventdispatcher_glib.cpp:204
#30 0x000000000143d193 in QEventLoop::processEvents (this=0x7fff8d5c1a20, flags={i = -1923343920}) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qeventloop.cpp:149
#31 0x000000000143d38e in QEventLoop::exec (this=0x7fff8d5c1a20, flags={i = -1923343824}) at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qeventloop.cpp:196
#32 0x0000000001440790 in QCoreApplication::exec () at /usr/local/src/kde/svn/trunk/qt-copy/src/corelib/kernel/qcoreapplication.cpp:849
#33 0x00000000058f3d3e in QApplication::exec () at /usr/local/src/kde/svn/trunk/qt-copy/src/gui/kernel/qapplication.cpp:3330
#34 0x000000000041290c in main (argc=1, argv=0x7fff8d5c22d8) at /usr/local/src/kde/svn/trunk/kdegames/kpat/main.cpp:179
Comment 1 Matthew Woehlke 2008-09-09 22:24:19 UTC
Created attachment 27343 [details]
savegame for lazy people :-)

This will happen with ANY game of simple simon (it's impossible to complete a game without hitting the bug), but for people who are lazy, here's a game that is 1 move away from completing a run. Moving the Qs-As onto the Ks starts the 'run complete' animation, which trips the assert about halfway through.

Note that I haven't noticed any ill effects from simply removing the assert...
Comment 2 Stephan Kulow 2008-09-10 11:50:45 UTC
thanks for the savegame, can confirm :)
Comment 3 Stephan Kulow 2008-09-10 12:02:25 UTC
fixed in SVN: 859425
Comment 4 Matthew Woehlke 2008-09-10 23:54:42 UTC
Confirmed, thanks!