Bug 247827

Summary: Kwin crashed while or after playing Cave Story
Product: [Plasma] Oxygen Reporter: David <davidsboogs>
Component: styleAssignee: Hugo Pereira Da Costa <hugo.pereira.da.costa>
Status: RESOLVED WORKSFORME    
Severity: crash CC: dyrver.eriksson, hugo.pereira.da.costa, kwin-bugs-null, moabi2000, rdieter
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=449853
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description David 2010-08-14 09:54:11 UTC
Application: kwin (4.5.00 (KDE 4.5.0))
KDE Platform Version: 4.5.00 (KDE 4.5.0)
Qt Version: 4.7.0
Operating System: Linux 2.6.32-24-generic x86_64
Distribution: Ubuntu 10.04.1 LTS

-- Information about the crash:
- What I was doing when the application crashed:
I was playing Cave Story in full screen.  Linux binary downloaded from here: http://www.miraigamer.net/cavestory/downloads_1.php
And when I came back either kwin had already crashed or it crashed immediately.  I suspect immediate because I saw it gone (no titlebars, no compositing) it then came back and there was the bug reporter.

This was not my first game session tonight, but I did only upgrade to KDE 4.5 this morning.  I had no kwin crashes before now (and have been playing since before the upgrade, at least a couple hours of game time).

-- Backtrace:
Application: KWin (kwin), signal: Aborted
[Current thread is 1 (Thread 0x7feb85ba07a0 (LWP 2309))]

Thread 2 (Thread 0x7feb65bc2710 (LWP 2410)):
#0  0x00007feb85529fe3 in select () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007feb81e5127e in qt_safe_select (nfds=22, fdread=0x1910240, fdwrite=0x19104d8, fdexcept=0x1910770, orig_timeout=0x0) at kernel/qcore_unix.cpp:82
#2  0x00007feb81e565ab in QEventDispatcherUNIXPrivate::doSelect (this=0x1910080, flags=<value optimized out>, timeout=<value optimized out>) at kernel/qeventdispatcher_unix.cpp:219
#3  0x00007feb81e571db in QEventDispatcherUNIX::processEvents (this=0x1bcfc60, flags=) at kernel/qeventdispatcher_unix.cpp:919
#4  0x00007feb81e267b2 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#5  0x00007feb81e26b9c in QEventLoop::exec (this=0x7feb65bc1d70, flags=) at kernel/qeventloop.cpp:201
#6  0x00007feb81d3223d in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:490
#7  0x00007feb81e066d8 in QInotifyFileSystemWatcherEngine::run (this=0x1d7cf00) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007feb81d351be in QThreadPrivate::start (arg=0x1d7cf00) at thread/qthread_unix.cpp:266
#9  0x00007feb81aa39ca in start_thread (arg=<value optimized out>) at pthread_create.c:300
#10 0x00007feb855316fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7feb85ba07a0 (LWP 2309)):
[KCrash Handler]
#6  0x00007feb8547ea75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#7  0x00007feb854825c0 in *__GI_abort () at abort.c:92
#8  0x00007feb854b84fb in __libc_message (do_abort=<value optimized out>, fmt=<value optimized out>) at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
#9  0x00007feb854c25b6 in malloc_printerr (action=3, str=0x7feb85592ab3 "free(): invalid pointer", ptr=<value optimized out>) at malloc.c:6264
#10 0x00007feb81e411c4 in QVectorTypedData<QObjectPrivate::ConnectionList>::free (this=<value optimized out>, __in_chrg=<value optimized out>)
    at ../../include/QtCore/../../src/corelib/tools/qvector.h:96
#11 QVector<QObjectPrivate::ConnectionList>::free (this=<value optimized out>, __in_chrg=<value optimized out>) at ../../include/QtCore/../../src/corelib/tools/qvector.h:439
#12 ~QVector (this=<value optimized out>, __in_chrg=<value optimized out>) at ../../include/QtCore/../../src/corelib/tools/qvector.h:119
#13 ~QObjectConnectionListVector (this=<value optimized out>, __in_chrg=<value optimized out>) at kernel/qobject.cpp:261
#14 ~QObject (this=<value optimized out>, __in_chrg=<value optimized out>) at kernel/qobject.cpp:902
#15 0x00007feb739d3f37 in ~Animation (this=0x905, __in_chrg=<value optimized out>) at ../../../libs/oxygen/oxygenanimation.h:55
#16 0x00007feb81e399ff in QObjectPrivate::deleteChildren (this=0x2e5e3a0) at kernel/qobject.cpp:1957
#17 0x00007feb81e4109b in ~QObject (this=<value optimized out>, __in_chrg=<value optimized out>) at kernel/qobject.cpp:945
#18 0x00007feb73c06cae in ~AnimationData (this=0x2e5e340, __in_chrg=<value optimized out>) at ../../../kstyles/oxygen/animations/oxygenanimationdata.h:57
#19 ~GenericData (this=0x2e5e340, __in_chrg=<value optimized out>) at ../../../kstyles/oxygen/animations/oxygengenericdata.h:55
#20 ~WidgetStateData (this=0x2e5e340, __in_chrg=<value optimized out>) at ../../../kstyles/oxygen/animations/oxygenwidgetstatedata.h:51
#21 ~EnableData (this=0x2e5e340, __in_chrg=<value optimized out>) at ../../../kstyles/oxygen/animations/oxygenenabledata.h:50
#22 0x00007feb73c31711 in Oxygen::WidgetStateEngine::unregisterWidget(QObject*) () from /usr/lib/kde4/plugins/styles/oxygen.so
#23 0x00007feb73c2d7f8 in Oxygen::WidgetStateEngine::qt_metacall (this=0x193ee20, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff8d3840a0) at ./oxygenwidgetstateengine.moc:73
#24 0x00007feb81e3f7a7 in QMetaObject::activate (sender=0x3059c50, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0xffffffffffffffff) at kernel/qobject.cpp:3280
#25 0x00007feb81e3fcef in QObject::destroyed (this=0x905, _t1=0x3059c50) at .moc/release-shared/moc_qobject.cpp:149
#26 0x00007feb81e40c57 in ~QObject (this=<value optimized out>, __in_chrg=<value optimized out>) at kernel/qobject.cpp:842
#27 0x00007feb80fd68ca in ~QWidget (this=0x3059c50, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1579
#28 0x00007feb6d25208e in ~B2Button (this=0x905, __in_chrg=<value optimized out>) at ../../../../kwin/clients/b2/b2client.h:55
#29 0x00007feb81e399ff in QObjectPrivate::deleteChildren (this=0x294b2a0) at kernel/qobject.cpp:1957
#30 0x00007feb80fd6838 in ~QWidget (this=0x23e03d0, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1559
#31 0x00007feb6d252301 in ~B2Titlebar (this=0x23e03d0, __in_chrg=<value optimized out>) at ../../../../kwin/clients/b2/b2client.h:91
#32 0x00007feb81e399ff in QObjectPrivate::deleteChildren (this=0x2ec8ff0) at kernel/qobject.cpp:1957
#33 0x00007feb80fd5b9c in ~QWidget (this=0x28f8e40, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1559
#34 0x00007feb84073a0d in ~KDecoration (this=0x31139b0, __in_chrg=<value optimized out>) at ../../../kwin/lib/kdecoration.cpp:71
#35 0x00007feb6d2520b3 in ~B2Client (this=0x905, __in_chrg=<value optimized out>) at ../../../../kwin/clients/b2/b2client.h:122
#36 0x00007feb85812715 in KWin::Client::destroyDecoration (this=0x2ed0860) at ../../kwin/client.cpp:377
#37 0x00007feb85813930 in KWin::Client::releaseWindow (this=0x2ed0860, on_shutdown=false) at ../../kwin/client.cpp:246
#38 0x00007feb85845b4b in KWin::Client::windowEvent (this=0x2ed0860, e=0x7fff8d384ce0) at ../../kwin/events.cpp:655
#39 0x00007feb85846168 in KWin::Workspace::workspaceEvent (this=0x1a7fd30, e=0x7fff8d384ce0) at ../../kwin/events.cpp:307
#40 0x00007feb85821968 in KWin::Application::x11EventFilter (this=0x7fff8d384f20, e=0x7fff8d384ce0) at ../../kwin/main.cpp:363
#41 0x00007feb80ff1881 in qt_x11EventFilter (ev=0x7fff8d384ce0) at kernel/qapplication_x11.cpp:408
#42 0x00007feb81001501 in QApplication::x11ProcessEvent (this=<value optimized out>, event=0x7fff8d384ce0) at kernel/qapplication_x11.cpp:3248
#43 0x00007feb8102e8ef in QEventDispatcherX11::processEvents (this=<value optimized out>, flags=) at kernel/qeventdispatcher_x11.cpp:132
#44 0x00007feb81e267b2 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#45 0x00007feb81e26b9c in QEventLoop::exec (this=0x7fff8d384e60, flags=) at kernel/qeventloop.cpp:201
#46 0x00007feb81e2ac4b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
#47 0x00007feb8582365d in kdemain (argc=<value optimized out>, argv=<value optimized out>) at ../../kwin/main.cpp:531
#48 0x00007feb85469c4d in __libc_start_main (main=<value optimized out>, argc=<value optimized out>, ubp_av=<value optimized out>, init=<value optimized out>, fini=<value optimized out>, 
    rtld_fini=<value optimized out>, stack_end=0x7fff8d385528) at libc-start.c:226
#49 0x00000000004006b9 in _start ()

Possible duplicates by query: bug 215345.

Reported using DrKonqi
Comment 1 Thomas Lübking 2010-08-14 15:45:52 UTC
Looks like Oxygen style animations clash with the B2 button implementation...
(ewww... could hit bespin as well... ;-)
Comment 2 Hugo Pereira Da Costa 2010-09-03 17:03:01 UTC
*** Bug 249579 has been marked as a duplicate of this bug. ***
Comment 3 Hugo Pereira Da Costa 2010-09-03 17:04:09 UTC
Copied from bug 249579:

One workaround I can think of is to not install animations on kwin decoration
buttons (from the style), since they are not used anyway: by construction, all
decoration buttons re-implement their paintEvent, and don't rely on the widget
style for painting.

(in the style, the animations are installed on QAbstractButton, because some
private classes from Qt inherits from it, and need animation. E.G. the
dockwidget buttons)
Comment 4 Hugo Pereira Da Costa 2010-09-03 17:16:26 UTC
ok. I had another idea. Maybe it is due to the fact that when a widget is deleted, its associated 'Animation' objects (which are children of a different widget) are deleted with explicit "delete XXX", as oposed to XXX->deleteLater(). 
Now this might happen in incorrect event loop, or when still processing signal-slot connection. I'll give a shot at 'deleteLater'
Comment 5 Hugo Pereira Da Costa 2010-09-03 17:19:17 UTC
SVN commit 1171373 by hpereiradacosta:

use ->deleteLater() rather than delete, when unregistering animations.
CCBUG: 247827


 M  +1 -1      oxygendatamap.h  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1171373
Comment 6 Hugo Pereira Da Costa 2010-09-04 01:46:31 UTC
------------------------------------------------------------------------
r1171484 | hpereiradacosta | 2010-09-03 17:49:00 -0600 (Fri, 03 Sep 2010) | 2 lines

replaced "delete animationData" by "animationData->deleteLater()" when a target is unregistered.


(thats the backport to 4.5 branch)
Comment 7 Thomas Lübking 2010-09-04 12:25:44 UTC
*** Bug 250155 has been marked as a duplicate of this bug. ***
Comment 8 Andrew Crouthamel 2018-10-30 00:04:07 UTC
Dear Bug Submitter,

This bug has been stagnant for a long time. Could you help us out and re-test if the bug is valid in the latest version? I am setting the status to NEEDSINFO pending your response, please change the Status back to REPORTED when you respond.

Thank you for helping us make KDE software even better for everyone!
Comment 9 Bug Janitor Service 2018-11-14 11:27:19 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 10 Bug Janitor Service 2018-11-29 04:48:31 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!