Bug 305221 - Dolphin Crash while selection program to open file [ QMutexLocker QThreadPrivate::finish ]
Summary: Dolphin Crash while selection program to open file [ QMutexLocker QThreadPriv...
Status: RESOLVED WORKSFORME
Alias: None
Product: dolphin
Classification: Applications
Component: general (show other bugs)
Version: 2.1
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Dolphin Bug Assignee
URL:
Keywords:
: 296747 308162 (view as bug list)
Depends on:
Blocks:
 
Reported: 2012-08-15 22:42 UTC by Leon Maurer
Modified: 2013-07-22 01:43 UTC (History)
7 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
New crash information added by DrKonqi (4.34 KB, text/plain)
2013-03-01 14:47 UTC, Heitor Adao Junior
Details
New crash information added by DrKonqi (5.76 KB, text/plain)
2013-03-26 12:44 UTC, Petr Kulhavy
Details
New crash information added by DrKonqi (4.01 KB, text/plain)
2013-07-07 14:32 UTC, auxsvr
Details
New crash information added by DrKonqi (3.99 KB, text/plain)
2013-07-22 01:43 UTC, ariasuni
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Leon Maurer 2012-08-15 22:42:29 UTC
Application: dolphin (2.1)
KDE Platform Version: 4.9.00
Qt Version: 4.8.1
Operating System: Linux 3.2.0-29-generic x86_64
Distribution: Ubuntu 12.04.1 LTS

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

I right clicked a file, chose "Open With -> Other...", entered "Kate", and hit enter. After that, Dolphin crashed.

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

Thread 4 (Thread 0x7fa4ffc7c700 (LWP 2811)):
#0  0x00007fff1da798de in ?? ()
#1  0x00007fa51321c15d in __GI_clock_gettime (clock_id=<optimized out>, tp=<optimized out>) at ../sysdeps/unix/clock_gettime.c:116
#2  0x00007fa51835abb4 in do_gettime (frac=0x7fa4ffc7ba98, sec=0x7fa4ffc7ba90) at tools/qelapsedtimer_unix.cpp:123
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:140
#4  0x00007fa518432b8d in QTimerInfoList::updateCurrentTime (this=0x7fa4f8002860) at kernel/qeventdispatcher_unix.cpp:343
#5  0x00007fa518432ec3 in QTimerInfoList::timerWait (this=0x7fa4f8002860, tm=...) at kernel/qeventdispatcher_unix.cpp:450
#6  0x00007fa51843197c in timerSourcePrepareHelper (src=<optimized out>, timeout=0x7fa4ffc7bb6c) at kernel/qeventdispatcher_glib.cpp:136
#7  0x00007fa518431a25 in timerSourcePrepare (source=<optimized out>, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#8  0x00007fa512f6a846 in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#9  0x00007fa512f6af5b in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007fa512f6b164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007fa518432426 in QEventDispatcherGlib::processEvents (this=0x7fa4f80008e0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#12 0x00007fa518401c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#13 0x00007fa518401ed7 in QEventLoop::exec (this=0x7fa4ffc7bcd0, flags=...) at kernel/qeventloop.cpp:204
#14 0x00007fa518300fa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#15 0x00007fa5183e19ff in QInotifyFileSystemWatcherEngine::run (this=0xb5b900) at io/qfilesystemwatcher_inotify.cpp:248
#16 0x00007fa518303fcb in QThreadPrivate::start (arg=0xb5b900) at thread/qthread_unix.cpp:298
#17 0x00007fa50b4d5b74 in ?? () from /usr/lib/nvidia-current/libGL.so.1
#18 0x00007fa51382fe9a in start_thread (arg=0x7fa4ffc7c700) at pthread_create.c:308
#19 0x00007fa51b6d84bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#20 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7fa4fea5a700 (LWP 2812)):
#0  0x00007fff1da798de in ?? ()
#1  0x00007fa51321c15d in __GI_clock_gettime (clock_id=<optimized out>, tp=<optimized out>) at ../sysdeps/unix/clock_gettime.c:116
#2  0x00007fa51835abb4 in do_gettime (frac=0x7fa4fea59a98, sec=0x7fa4fea59a90) at tools/qelapsedtimer_unix.cpp:123
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:140
#4  0x00007fa518432b8d in QTimerInfoList::updateCurrentTime (this=0x7fa4f0002660) at kernel/qeventdispatcher_unix.cpp:343
#5  0x00007fa518432ec3 in QTimerInfoList::timerWait (this=0x7fa4f0002660, tm=...) at kernel/qeventdispatcher_unix.cpp:450
#6  0x00007fa51843197c in timerSourcePrepareHelper (src=<optimized out>, timeout=0x7fa4fea59b6c) at kernel/qeventdispatcher_glib.cpp:136
#7  0x00007fa518431a25 in timerSourcePrepare (source=<optimized out>, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#8  0x00007fa512f6a846 in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#9  0x00007fa512f6af5b in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007fa512f6b164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007fa518432426 in QEventDispatcherGlib::processEvents (this=0x7fa4f00008e0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#12 0x00007fa518401c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#13 0x00007fa518401ed7 in QEventLoop::exec (this=0x7fa4fea59cd0, flags=...) at kernel/qeventloop.cpp:204
#14 0x00007fa518300fa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#15 0x00007fa5183e19ff in QInotifyFileSystemWatcherEngine::run (this=0xac2910) at io/qfilesystemwatcher_inotify.cpp:248
#16 0x00007fa518303fcb in QThreadPrivate::start (arg=0xac2910) at thread/qthread_unix.cpp:298
#17 0x00007fa50b4d5b74 in ?? () from /usr/lib/nvidia-current/libGL.so.1
#18 0x00007fa51382fe9a in start_thread (arg=0x7fa4fea5a700) at pthread_create.c:308
#19 0x00007fa51b6d84bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#20 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7fa4fc916700 (LWP 5011)):
[KCrash Handler]
#6  lockInline (this=0x88) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:187
#7  QMutexLocker (m=0x88, this=0x7fa4fc915d10) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:109
#8  QThreadPrivate::finish (arg=<optimized out>) at thread/qthread_unix.cpp:310
#9  0x00007fa518303fd3 in ~__pthread_cleanup_class (this=<synthetic pointer>, __in_chrg=<optimized out>) at /usr/include/pthread.h:545
#10 ~__pthread_cleanup_class (this=<synthetic pointer>, __in_chrg=<optimized out>) at thread/qthread_unix.cpp:716
#11 QThreadPrivate::start (arg=0x19598b0) at thread/qthread_unix.cpp:300
#12 0x00007fa50b4d5b74 in ?? () from /usr/lib/nvidia-current/libGL.so.1
#13 0x00007fa51382fe9a in start_thread (arg=0x7fa4fc916700) at pthread_create.c:308
#14 0x00007fa51b6d84bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#15 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fa51be067c0 (LWP 2675)):
#0  0x00007fa51b6cb0bd in read () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007fa50b4d40bc in ?? () from /usr/lib/nvidia-current/libGL.so.1
#2  0x00007fa50a531b27 in ?? () from /usr/lib/nvidia-current/tls/libnvidia-tls.so.295.40
#3  0x00007fa512fa58cf in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007fa512f6aba4 in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007fa512f6afd6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x00007fa512f6b164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#7  0x00007fa5184323bf in QEventDispatcherGlib::processEvents (this=0x8c2e80, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#8  0x00007fa5175b0d5e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#9  0x00007fa518401c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#10 0x00007fa518401ed7 in QEventLoop::exec (this=0x7fff1da28930, flags=...) at kernel/qeventloop.cpp:204
#11 0x00007fa518406f67 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148
#12 0x00007fa51b9f0047 in kdemain (argc=3, argv=0x7fff1da28ef8) at ../../../dolphin/src/main.cpp:89
#13 0x00007fa51b60776d in __libc_start_main (main=0x400640 <main(int, char**)>, argc=3, ubp_av=0x7fff1da28ef8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff1da28ee8) at libc-start.c:226
#14 0x0000000000400671 in _start ()

This bug may be a duplicate of or related to bug 296747, bug 302483.

Possible duplicates by query: bug 303101, bug 302483, bug 296747.

Reported using DrKonqi
Comment 1 Frank Reininghaus 2012-08-16 09:07:02 UTC
Thanks for the bug report!

> #0  0x00007fa51b6cb0bd in read () at ../sysdeps/unix/syscall-template.S:82
> #1  0x00007fa50b4d40bc in ?? () from /usr/lib/nvidia-current/libGL.so.1
> #2  0x00007fa50a531b27 in ?? () from
> /usr/lib/nvidia-current/tls/libnvidia-tls.so.295.40

Looks like a graphics driver bug to me.
Comment 2 Christoph Feck 2012-08-16 20:31:35 UTC
Frank, the crash is in thread 2, involving mutexes. Looks more like Soprano stuff (or does Dolphin itself use threads?)
Comment 3 Frank Reininghaus 2012-08-17 10:31:20 UTC
Thanks Christoph! Dolphin itself only uses mutexes in the version control observer (just grepped the sources to check that).

How can one actually tell in which thread the crash happens?

Another thing that looks a bit strange to me is that the backtraces of all threads contain an nvidia driver frame. But that might be due to me not being an expert for crashes that involve multithreading ;-)
Comment 4 Christoph Feck 2012-08-18 09:26:20 UTC
> How can one actually tell in which thread the crash happens?

Check which thread starts with [KCrash Handler].

> Dolphin itself only uses mutexes in the version control observer

Since mutexes are also used by QThread itself, you should check of threads, not mutexes specifically. So the question remains, what, if any, threads does Dolphin create?

> threads contain an nvidia driver frame

Let's assume it is unimportant. NVIDIA libraries just hook into "start_thread" to make their GL libraries thread-safe.
Comment 5 Jekyll Wu 2012-08-20 10:42:03 UTC
*** Bug 296747 has been marked as a duplicate of this bug. ***
Comment 6 Frank Reininghaus 2012-08-23 15:35:16 UTC
(In reply to comment #4)
> Check which thread starts with [KCrash Handler].

I see, thanks! Stupid me ;-)

> > Dolphin itself only uses mutexes in the version control observer
> 
> Since mutexes are also used by QThread itself, you should check of threads,
> not mutexes specifically. So the question remains, what, if any, threads
> does Dolphin create?

Dolphin creates threads only for the version control observer and for reading file meta data, unless I'm overlooking some other kdelibs class that indirectly starts threads. So it could indeed be related to Soprano, but I'm afraid that the backtrace contains too little information, so we need a way to reproduce the crash reliably.
Comment 7 Jeroen van Meeuwen (Kolab Systems) 2012-08-24 16:20:04 UTC
Resetting assignee to default as per bug #305719
Comment 8 Jekyll Wu 2012-10-10 08:29:50 UTC
*** Bug 308162 has been marked as a duplicate of this bug. ***
Comment 9 Heitor Adao Junior 2013-03-01 14:47:12 UTC
Created attachment 77666 [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:

Just opened Dolphin,
clicked in a bookmark to apen a directory,
right click on a file, "Open With..."
typed "kate" inside the combobox, <enter>, and dolphin crashed

-- Backtrace (Reduced):
#6  lockInline (this=0x88) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:187
#7  QMutexLocker (m=0x88, this=0x7f2248c2edf0) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:109
#8  QThreadPrivate::finish (arg=arg@entry=0x26c57b0) at thread/qthread_unix.cpp:350
#9  0x00007f2261e6bb02 in ~__pthread_cleanup_class (this=<synthetic pointer>, __in_chrg=<optimized out>) at /usr/include/pthread.h:545
#10 QThreadPrivate::start (arg=0x26c57b0) at thread/qthread_unix.cpp:340
Comment 10 Petr Kulhavy 2013-03-26 12:44:04 UTC
Created attachment 78394 [details]
New crash information added by DrKonqi

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

I clicked a binary file with .cfg extension to be open, entered "kate" into the application selection pop-up window, pressed enter and then Dolphin crashed.

-- Backtrace (Reduced):
#7  lockInline (this=0x4c) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:187
#8  QMutexLocker (m=0x4c, this=0xab55929c) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:109
#9  QThreadPrivate::finish (arg=0xa11f108) at thread/qthread_unix.cpp:310
#10 0xb633fde8 in ~__pthread_cleanup_class (this=<synthetic pointer>, __in_chrg=<optimized out>) at /usr/include/pthread.h:545
#11 ~__pthread_cleanup_class (this=<synthetic pointer>, __in_chrg=<optimized out>) at thread/qthread_unix.cpp:716
Comment 11 Frank Reininghaus 2013-04-22 20:07:50 UTC
I don't see any reports of this crash after KDE 4.9.5. On the other hand, there is a threading-related fix in Dolphin 2.2 (KDE 4.10), see bug 302264. This makes me think that the crash in the present report is related to the fixed one.

Please reopen if you see this crash again in KDE 4.10.2 or later. Thanks!
Comment 12 auxsvr 2013-07-07 14:32:28 UTC
Created attachment 81002 [details]
New crash information added by DrKonqi

dolphin (4.10.90) on KDE Platform 4.10.90 using Qt 4.8.4

- What I was doing when the application crashed:

I tried to open a file with Open with... Kwrite. It always crashes, either before or after kwrite is launched.

-- Backtrace (Reduced):
#6  lockInline (this=0x4c) at ../../src/corelib/thread/qmutex.h:187
#7  QMutexLocker (m=0x4c, this=0xade8227c) at ../../src/corelib/thread/qmutex.h:109
#8  QThreadPrivate::finish (arg=0x995eab8) at thread/qthread_unix.cpp:350
#9  0xb6c98f8e in ~__pthread_cleanup_class (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/pthread.h:552
#10 QThreadPrivate::start (arg=0x995eab8) at thread/qthread_unix.cpp:340
Comment 13 Frank Reininghaus 2013-07-08 09:14:40 UTC
(In reply to comment #12)
> I tried to open a file with Open with... Kwrite. It always crashes, either
> before or after kwrite is launched.

Thanks for reporting. Do you use one of the version control plugins?
Comment 14 auxsvr 2013-07-13 15:36:42 UTC
The package dolphin-plugins is installed and the file I'm opening is a plain-text .ini file.
Comment 15 Frank Reininghaus 2013-07-14 09:24:33 UTC
Thanks for the update. I've tried to reproduce this with enabled git plugin, both in version-controlled and other folders, but I can't get it to crash.

Could you please try if disabling all version control plugins in the "Services" section of the settings helps, and then open a new bug report? I'm not sure if the root cause is really the same as for the original report here (note that the crash has not been reported a single time for KDE 4.10.x, and I know that the version control code has changed between 4.9 -> 4.10 and again for 4.10 -> 4.11).

Thanks for your help.
Comment 16 auxsvr 2013-07-14 12:21:42 UTC
This is weird. There was an SVN service enabled, after disabling it dolphin no longer crashes. The weird part is that after enabling it, the crashes, which were 100% reproducible, cannot be reproduced! Could this be related to some setting set to incompatible value when upgrading KDE?
Comment 17 Frank Reininghaus 2013-07-16 09:01:31 UTC
(In reply to comment #16)
> This is weird. There was an SVN service enabled, after disabling it dolphin
> no longer crashes. The weird part is that after enabling it, the crashes,
> which were 100% reproducible, cannot be reproduced! Could this be related to
> some setting set to incompatible value when upgrading KDE?

I'm not sure. In any case, please file a new bug report if you ever see this issue again. Thanks.
Comment 18 ariasuni 2013-07-22 01:43:42 UTC
Created attachment 81254 [details]
New crash information added by DrKonqi

dolphin (2.2) on KDE Platform 4.10.5 using Qt 4.8.5

I had this bug on KDE 4.10.5 (Arch Linux).

– What I was doing when the application crashed:
Right clic → Open With → I write «Kate» and then hit enter. I was able to reproduce it many times, and then It stop crashing and I don’t know why.

I got many segfault but one time I obtain this backtrace. Hope it will be useful.

-- Backtrace (Reduced):
#6  0x00007fd7da51db85 in _XEventsQueued () from /usr/lib/libX11.so.6
#7  0x00007fd7da50fc9b in XEventsQueued () from /usr/lib/libX11.so.6
[...]
#12 0x00007fd7d9cd3b85 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
[...]
#14 0x00007fd7d9ca5b5f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#15 0x00007fd7d9ca5e55 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4