Bug 315392 - Crash in Oxygen::StyleHelper::~StyleHelper (dangling Oxygen::TileSet pointer in cache?)
Summary: Crash in Oxygen::StyleHelper::~StyleHelper (dangling Oxygen::TileSet pointer ...
Status: RESOLVED FIXED
Alias: None
Product: dolphin
Classification: Applications
Component: general (show other bugs)
Version: 2.1
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Dolphin Bug Assignee
URL:
Keywords:
: 322174 (view as bug list)
Depends on:
Blocks:
 
Reported: 2013-02-18 15:05 UTC by Pär Johansson
Modified: 2018-04-15 16:09 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
New crash information added by DrKonqi (4.80 KB, text/plain)
2013-03-29 12:36 UTC, Valter
Details
New crash information added by DrKonqi (3.27 KB, text/plain)
2013-08-27 20:24 UTC, Brian Greaney
Details
New crash information added by DrKonqi (2.90 KB, text/plain)
2013-12-16 01:21 UTC, rondinellisr
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Pär Johansson 2013-02-18 15:05:14 UTC
Application: dolphin (2.1)
KDE Platform Version: 4.9.5
Qt Version: 4.8.4
Operating System: Linux 3.7.6-102.fc17.i686 i686
Distribution: "Fedora release 17 (Beefy Miracle)"

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

I had connected a USB device (Garmin 210 Forerunner).

- Unusual behavior I noticed:

After I connected the USB device, I selected "open with file manager". To my surprise, it opened in Konqueror instead of Dolphin. I switched to Dolphin and opened SportsTracker (a Java application). When I closed SportsTracker (that is reading files from the above mentioned USB device), Dolphin crashed.

-- Backtrace:
Application: Dolphin (dolphin), signal: Segmentation fault
Using host libthread_db library "/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0xb121bac0 (LWP 4309))]

Thread 2 (Thread 0xae805b40 (LWP 4312)):
#0  0xb7769424 in __kernel_vsyscall ()
#1  0xb5468f34 in __GI___poll (fds=fds@entry=0xadf02278, nfds=nfds@entry=1, timeout=timeout@entry=-1) at ../sysdeps/unix/sysv/linux/poll.c:87
#2  0xb4840f5c in g_poll (fds=0xadf02278, nfds=1, timeout=-1) at gpoll.c:132
#3  0xb48323e0 in g_main_context_poll (n_fds=1, fds=0xadf02278, timeout=<optimized out>, context=0xadf004e0, priority=<optimized out>) at gmain.c:3440
#4  g_main_context_iterate (context=context@entry=0xadf004e0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3141
#5  0xb4832542 in g_main_context_iteration (context=0xadf004e0, may_block=1) at gmain.c:3207
#6  0xb665f4ff in QEventDispatcherGlib::processEvents (this=0xadf00468, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#7  0xb662b54d in QEventLoop::processEvents (this=this@entry=0xae8051a8, flags=...) at kernel/qeventloop.cpp:149
#8  0xb662b849 in QEventLoop::exec (this=0xae8051a8, flags=...) at kernel/qeventloop.cpp:204
#9  0xb6513b3c in QThread::exec (this=0x861f408) at thread/qthread.cpp:542
#10 0xb66094ee in QInotifyFileSystemWatcherEngine::run (this=0x861f408) at io/qfilesystemwatcher_inotify.cpp:256
#11 0xb6516fca in QThreadPrivate::start (arg=0x861f408) at thread/qthread_unix.cpp:338
#12 0xb649badf in start_thread (arg=0xae805b40) at pthread_create.c:309
#13 0xb547342e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133

Thread 1 (Thread 0xb121bac0 (LWP 4309)):
[KCrash Handler]
#7  QVector<QPixmap>::free (x=0x8b72a90, this=0x8bdff64) at /usr/include/QtCore/qvector.h:466
#8  0xaf927aff in ~QVector (this=0x8bdff64, __in_chrg=<optimized out>) at /usr/include/QtCore/qvector.h:124
#9  ~TileSet (this=0x8bdff60, __in_chrg=<optimized out>) at /usr/src/debug/kde-workspace-4.9.5/libs/oxygen/oxygentileset.h:77
#10 Oxygen::TileSet::~TileSet (this=0x8bdff60, __in_chrg=<optimized out>) at /usr/src/debug/kde-workspace-4.9.5/libs/oxygen/oxygentileset.h:77
#11 0xaf9643ef in clear (this=<optimized out>) at /usr/include/QtCore/qcache.h:139
#12 ~QCache (this=0x8503b6c, __in_chrg=<optimized out>) at /usr/include/QtCore/qcache.h:103
#13 ~BaseCache (this=0x8503b6c, __in_chrg=<optimized out>) at /usr/src/debug/kde-workspace-4.9.5/libs/oxygen/oxygenhelper.h:63
#14 Oxygen::StyleHelper::~StyleHelper (this=0x85038e8, __in_chrg=<optimized out>) at /usr/src/debug/kde-workspace-4.9.5/kstyles/oxygen/oxygenstylehelper.h:59
#15 0xaf964903 in Oxygen::StyleHelper::~StyleHelper (this=0x85038e8, __in_chrg=<optimized out>) at /usr/src/debug/kde-workspace-4.9.5/kstyles/oxygen/oxygenstylehelper.h:59
#16 0xaf92da42 in Oxygen::Style::~Style (this=0x84ed8a0, __in_chrg=<optimized out>) at /usr/src/debug/kde-workspace-4.9.5/kstyles/oxygen/oxygenstyle.cpp:199
#17 0xaf92dab3 in Oxygen::Style::~Style (this=0x84ed8a0, __in_chrg=<optimized out>) at /usr/src/debug/kde-workspace-4.9.5/kstyles/oxygen/oxygenstyle.cpp:199
#18 0xb5a81d00 in QApplication::~QApplication (this=0xbff5c930, __in_chrg=<optimized out>) at kernel/qapplication.cpp:1173
#19 0xb6cbc7f9 in KApplication::~KApplication (this=0xbff5c930, __in_chrg=<optimized out>) at /usr/src/debug/kdelibs-4.9.5/kdeui/kernel/kapplication.cpp:894
#20 0xb76cf264 in DolphinApplication::~DolphinApplication (this=0xbff5c930, __in_chrg=<optimized out>) at /usr/src/debug/kde-baseapps-4.9.5/dolphin/src/dolphinapplication.cpp:83
#21 0xb76e8678 in kdemain (argc=5, argv=0xbff5ca14) at /usr/src/debug/kde-baseapps-4.9.5/dolphin/src/main.cpp:90
#22 0x080486dc in main (argc=5, argv=0xbff5ca14) at /usr/src/debug/kde-baseapps-4.9.5/i686-redhat-linux-gnu/dolphin/src/dolphin_dummy.cpp:3

Possible duplicates by query: bug 311092, bug 308883, bug 306894, bug 306427, bug 304410.

Reported using DrKonqi
Comment 1 Frank Reininghaus 2013-02-18 15:34:40 UTC
Thanks for the bug report!

@Hugo: reminds me a bit of bug 311092. The present report is for KDE 4.9.5, which includes your patch for that bug. This means that we can now be sure that the destructor of DolphinApplication, where the crash happens, is executed *before* the main() function is finished. Do you know anything that might have deleted a TileSet from the cache before that, leaving the pointer in the crash dangling? Thanks!

BTW, you should be able to choose the default file manager in the System Settings.
Comment 2 Pär Johansson 2013-02-18 16:01:00 UTC
Dear Frank!

Thank You for the quick reply.

Yes, I used System Settings to switch back to Dolphin.

I'm not really sure *what* caused the crash, because all of above happened in rather quick succession: Plugged in Garmin 210; Opened file manager; closed Konqueror (because i wanted Dolphin); started Dolphin and opened "/mnt/media/Garmin/..."; started SportsTracker; read data from Garmin device; glanced at data; closed SportsTracker; crash!

Best regards,

Pär Johansson
Comment 3 Hugo Pereira Da Costa 2013-02-18 16:02:57 UTC
.(In reply to comment #1)
> Thanks for the bug report!
> 
> @Hugo: reminds me a bit of bug 311092. 

Agreed

> The present report is for KDE 4.9.5,
> which includes your patch for that bug. This means that we can now be sure
> that the destructor of DolphinApplication, where the crash happens, is
> executed *before* the main() function is finished. 

Yes (crap)

> Do you know anything that
> might have deleted a TileSet from the cache before that, leaving the pointer
> in the crash dangling? Thanks!

Well, no ... 
I'm pretty sure there is no TileSet deletion in Oxygen itself (As a matter of fact, a grep -i delete throughout the oxygen codes shows that we don't delete much things ... ). 
We call, new TileSet, store them in caches, and let Qt cleanup the mess itself. Maybe its just a Qt bug ... (or me not knowing how to use the caches). 

> BTW, you should be able to choose the default file manager in the System
> Settings.
Comment 4 Valter 2013-03-29 12:36:46 UTC
Created attachment 78478 [details]
New crash information added by DrKonqi

dolphin (2.0) on KDE Platform 4.8.5 (4.8.5) using Qt 4.8.1

- What I was doing when the application crashed:

- Custom settings of the application:

Poco prima era stato spento un altro pc su cui sono definite condivisioni nfs montate automaticamente mediante fstab da questo pc.

-- Backtrace (Reduced):
#7  0xb2ef378a in QVector<QPixmap>::free (x=0x9f6b980, this=<optimized out>) at /usr/include/qt4/QtCore/qvector.h:466
#8  0xb2ef479e in ~QVector (this=0xa4c0524, __in_chrg=<optimized out>) at /usr/include/qt4/QtCore/qvector.h:124
#9  ~TileSet (this=0xa4c0520, __in_chrg=<optimized out>) at ../../../libs/oxygen/oxygentileset.h:77
#10 Oxygen::TileSet::~TileSet (this=0xa4c0520, __in_chrg=<optimized out>) at ../../../libs/oxygen/oxygentileset.h:77
#11 0xb2f330ef in clear (this=0x9b1a0d4) at /usr/include/qt4/QtCore/qcache.h:139
Comment 5 Frank Reininghaus 2013-07-10 06:27:16 UTC
*** Bug 322174 has been marked as a duplicate of this bug. ***
Comment 6 Brian Greaney 2013-08-27 20:24:48 UTC
Created attachment 81975 [details]
New crash information added by DrKonqi

dolphin (2.1) on KDE Platform 4.9.5 using Qt 4.8.3

- What I was doing when the application crashed: I had two external USB devices connected, a tablet and a USB HDD, I was copying several files from the HDD to the tablet. I noticed that on one of them I selected mov not copy so I paused it. Once the other transfers were complet I then kiled the transfer, thats when it crashed on me. hope this is of some use :)
I'm using Mint 14

-- Backtrace (Reduced):
#7  QVector<QPixmap>::free (x=0xa467be0, this=0xa5ee5cc) at /usr/include/qt4/QtCore/qvector.h:466
#8  0xb049f9ee in ~QVector (this=0xa5ee5cc, __in_chrg=<optimized out>) at /usr/include/qt4/QtCore/qvector.h:124
#9  ~TileSet (this=0xa5ee5c8, __in_chrg=<optimized out>) at ../../../libs/oxygen/oxygentileset.h:77
#10 Oxygen::TileSet::~TileSet (this=0xa5ee5c8, __in_chrg=<optimized out>) at ../../../libs/oxygen/oxygentileset.h:77
#11 0xb04dbb0f in clear (this=<optimized out>) at /usr/include/qt4/QtCore/qcache.h:139
Comment 7 Frank Reininghaus 2013-09-24 12:41:34 UTC
Can anyone still reproduce this crash with more recent versions of Dolphin/KDE? I think I haven't seen a report for anything newer than KDE SC 4.9.5.

Thanks for your help.
Comment 8 rondinellisr 2013-12-16 01:21:15 UTC
Created attachment 84116 [details]
New crash information added by DrKonqi

dolphin (2.2) on KDE Platform 4.10.5 using Qt 4.8.5

- What I was doing when the application crashed:

I was trying close the window, after I move some files to another directory, and then crashed.

-- Backtrace (Reduced):
#7  0xaeff727e in Oxygen::TileSet::~TileSet() () from /usr/lib/kde4/plugins/styles/oxygen.so
#8  0xaf03340f in Oxygen::StyleHelper::~StyleHelper() () from /usr/lib/kde4/plugins/styles/oxygen.so
#9  0xaf033922 in Oxygen::StyleHelper::~StyleHelper() () from /usr/lib/kde4/plugins/styles/oxygen.so
#10 0xaeffce21 in Oxygen::Style::~Style() () from /usr/lib/kde4/plugins/styles/oxygen.so
#11 0xaeffce92 in Oxygen::Style::~Style() () from /usr/lib/kde4/plugins/styles/oxygen.so
Comment 9 Julian Steinmann 2018-03-31 10:33:39 UTC
Can anyone still reproduce this crash with more recent versions of Dolphin/KDE? If not, I'll close this bug soon.
Comment 10 Julian Steinmann 2018-04-15 16:09:27 UTC
No response -> closing. Thanks for reporting this bug, please reopen the report if you can still reproduce this behavior with newer versions of Dolphin.