Bug 325126

Summary: Naval Battle crashes when closing the program while animation is running
Product: [Applications] knavalbattle Reporter: Martin Walch <walch.martin>
Component: generalAssignee: Roney Gomes <roney477>
Status: RESOLVED FIXED    
Severity: crash CC: kde-games-bugs
Priority: NOR Keywords: drkonqi
Version: 2.0   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 4.11.4
Sentry Crash Report:

Description Martin Walch 2013-09-20 18:11:52 UTC
Application: kbattleship (2.0)
KDE Platform Version: 4.11.1 (Compiled from sources)
Qt Version: 4.8.4
Operating System: Linux 3.10.7-gentoo-gnu x86_64
Distribution: "NAME=Gentoo"

-- Information about the crash:
Steps to reproduce:
- run Naval Battle
- trigger an animation (start a single player game, place a ship etc.)
- while the animation is not complete, quit the program (e. g. by pressing Ctrl+Q or Alt+F4 or by clicking on the close button (x) of the window
(yes, you need to do this fast)

This ends up in a crash.

The crash can be reproduced every time.

-- Backtrace:
Application: Naval Battle (kbattleship), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[KCrash Handler]
#6  0x0000000000000000 in ?? ()
#7  0x00007f35442fe71d in QGraphicsItem::setOpacity (this=0x2ba8280, opacity=<optimized out>) at graphicsview/qgraphicsitem.cpp:2718
#8  0x0000000000414901 in FadeAnimation::step (this=<optimized out>, t=45777536) at /var/tmp/portage/kde-base/knavalbattle-4.11.1/work/knavalbattle-4.11.1/src/animation.cpp:90
#9  0x0000000000414cf9 in AnimationGroup::step (this=0x23573d0, t=1226) at /var/tmp/portage/kde-base/knavalbattle-4.11.1/work/knavalbattle-4.11.1/src/animation.cpp:47
#10 0x00000000004150a0 in Animator::tick (this=0x2357400) at /var/tmp/portage/kde-base/knavalbattle-4.11.1/work/knavalbattle-4.11.1/src/animator.cpp:55
#11 0x00007f35432a17b5 in QMetaObject::activate (sender=<optimized out>, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff49443470) at kernel/qobject.cpp:3539
#12 0x00007f354329d4a9 in QObject::event (this=0x2357418, e=0x2ba8280) at kernel/qobject.cpp:1156
#13 0x00007f3543ce204c in QApplicationPrivate::notify_helper (this=0x20ede00, receiver=0x2357418, e=0x7fff49443da0) at kernel/qapplication.cpp:4562
#14 0x00007f3543ce8c14 in QApplication::notify (this=0x7fff49444100, receiver=<optimized out>, e=0x7fff49443da0) at kernel/qapplication.cpp:3944
#15 0x00007f35451bdfd6 in KApplication::notify (this=0x7fff49444100, receiver=0x2357418, event=0x7fff49443da0) at /var/tmp/portage/kde-base/kdelibs-4.11.1/work/kdelibs-4.11.1/kdeui/kernel/kapplication.cpp:311
#16 0x00007f354328a9ac in QCoreApplication::notifyInternal (this=0x7fff49444100, receiver=0x2357418, event=0x7fff49443da0) at kernel/qcoreapplication.cpp:946
#17 0x00007f35432bf652 in sendEvent (event=<optimized out>, receiver=<optimized out>) at kernel/qcoreapplication.h:231
#18 QTimerInfoList::activateTimers (this=0x20eacd0) at kernel/qeventdispatcher_unix.cpp:622
#19 0x00007f35432bc8fd in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:186
#20 0x00007f353ea86df5 in g_main_dispatch (context=<optimized out>) at gmain.c:2539
#21 g_main_context_dispatch (context=<optimized out>) at gmain.c:3075
#22 0x00007f353ea894fd in g_main_context_iterate (context=0x20efb40, block=<optimized out>, dispatch=<optimized out>, self=<optimized out>) at gmain.c:3146
#23 0x00007f353ea8956b in g_main_context_iteration (context=0x20efb40, may_block=1) at gmain.c:3207
#24 0x00007f35432bc5e5 in QEventDispatcherGlib::processEvents (this=0x20c7470, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#25 0x00007f3543d963e2 in QGuiEventDispatcherGlib::processEvents (this=0x7fff49443480, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#26 0x00007f35432894e8 in QEventLoop::processEvents (this=<optimized out>, flags=<error reading variable: DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>) at kernel/qeventloop.cpp:149
#27 0x00007f3543289975 in QEventLoop::exec (this=0x7fff49444040, flags=<error reading variable: DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>) at kernel/qeventloop.cpp:204
#28 0x00007f354328f843 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1218
#29 0x000000000041ea33 in main (argc=<optimized out>, argv=<optimized out>) at /var/tmp/portage/kde-base/knavalbattle-4.11.1/work/knavalbattle-4.11.1/src/main.cpp:78

Reported using DrKonqi
Comment 1 Jaime Torres 2013-11-21 19:48:27 UTC
Git commit fa0ae896233c2aadf13b540a6d0405ae570a41e0 by Jaime Torres.
Committed on 21/11/2013 at 19:43.
Pushed by jtamate into branch 'KDE/4.11'.

stop the animation when the main window is about to be closed.

Stopping the animation avoids a crash, because the animation is a
singleton. If it is a variable of the mainwindow, then it will be
stopped/deleted before the mainwindow is deleted.
FIXED-IN: KDE/4.11.4 KDE/4.12

M  +5    -0    src/mainwindow.cpp
M  +1    -0    src/mainwindow.h

http://commits.kde.org/knavalbattle/fa0ae896233c2aadf13b540a6d0405ae570a41e0
Comment 2 Jaime Torres 2013-11-21 19:49:29 UTC
Git commit 42b2fb1f69aadb4d2322e89ecc818ad9931df943 by Jaime Torres.
Committed on 21/11/2013 at 19:43.
Pushed by jtamate into branch 'KDE/4.12'.

stop the animation when the main window is about to be closed.

Stopping the animation avoids a crash, because the animation is a
singleton. If it is a variable of the mainwindow, then it will be
stopped/deleted before the mainwindow is deleted.
FIXED-IN: KDE/4.11.4 KDE/4.12

M  +5    -0    src/mainwindow.cpp
M  +1    -0    src/mainwindow.h

http://commits.kde.org/knavalbattle/42b2fb1f69aadb4d2322e89ecc818ad9931df943
Comment 3 Jaime Torres 2013-11-21 19:50:10 UTC
Git commit 6ea0522d338a4fe748d3a8050225e3c6bd662b49 by Jaime Torres.
Committed on 21/11/2013 at 19:43.
Pushed by jtamate into branch 'master'.

stop the animation when the main window is about to be closed.

Stopping the animation avoids a crash, because the animation is a
singleton. If it is a variable of the mainwindow, then it will be
stopped/deleted before the mainwindow is deleted.
FIXED-IN: KDE/4.11.4 KDE/4.12

M  +5    -0    src/mainwindow.cpp
M  +1    -0    src/mainwindow.h

http://commits.kde.org/knavalbattle/6ea0522d338a4fe748d3a8050225e3c6bd662b49