Bug 270366

Summary: Hovering over .CR2 (camera raw) files with the information panel on crashes dolphin
Product: [Unmaintained] kio Reporter: Philip Muškovac <yofel>
Component: generalAssignee: Jos van den Oever <jos>
Status: RESOLVED WORKSFORME    
Severity: crash CC: adawit, alexander.nofamilyname, bugzilla, cfeck, christos.lazaridis+kde.bugzilla, harald.koch, LLLActive, peter.penz19, v.babosha
Priority: NOR Keywords: triaged
Version: unspecified   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In: 4.7.0
Sentry Crash Report:
Attachments: These are the first 65536 of the CR2 test file.
New crash information added by DrKonqi
New crash information added by DrKonqi

Description Philip Muškovac 2011-04-07 22:11:16 UTC
Application: dolphin (1.6.1)
KDE Platform Version: 4.6.2 (4.6.2)
Qt Version: 4.7.2
Operating System: Linux 2.6.38-8-generic x86_64
Distribution: Ubuntu Natty (development branch)

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

I was viewing pictures with the information panel enabled and as soon as I hovered over a .CR2 file with the mouse dolphin crashed.

The crash can be reproduced every time.

-- Backtrace:
Application: Dolphin (dolphin), signal: Segmentation fault
pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
	in ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
[Current thread is 1 (Thread 0x7f8d19738780 (LWP 19367))]

Thread 4 (Thread 0x7f8d06274700 (LWP 19375)):
#0  0x00007f8d1902ef03 in __poll (fds=<value optimized out>, nfds=<value optimized out>, timeout=<value optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f8d117cd104 in g_main_context_poll (context=0x7f8d000009a0, block=<value optimized out>, dispatch=1, self=<value optimized out>) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:3404
#2  g_main_context_iterate (context=0x7f8d000009a0, block=<value optimized out>, dispatch=1, self=<value optimized out>) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:3086
#3  0x00007f8d117cd639 in g_main_context_iteration (context=0x7f8d000009a0, may_block=1) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:3154
#4  0x00007f8d154b4446 in QEventDispatcherGlib::processEvents (this=0x7f8d000008b0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:424
#5  0x00007f8d15488882 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
#6  0x00007f8d15488abc in QEventLoop::exec (this=0x7f8d06273dd0, flags=...) at kernel/qeventloop.cpp:201
#7  0x00007f8d1539f924 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:492
#8  0x00007f8d1546ac2f in QInotifyFileSystemWatcherEngine::run (this=0x271ee80) at io/qfilesystemwatcher_inotify.cpp:248
#9  0x00007f8d153a2175 in QThreadPrivate::start (arg=0x271ee80) at thread/qthread_unix.cpp:320
#10 0x00007f8d11c98d8c in start_thread (arg=0x7f8d06274700) at pthread_create.c:304
#11 0x00007f8d1903c04d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#12 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f8cfefbf700 (LWP 19856)):
#0  0x00007f8d1902ef03 in __poll (fds=<value optimized out>, nfds=<value optimized out>, timeout=<value optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f8d117cd104 in g_main_context_poll (context=0x2e56f80, block=<value optimized out>, dispatch=1, self=<value optimized out>) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:3404
#2  g_main_context_iterate (context=0x2e56f80, block=<value optimized out>, dispatch=1, self=<value optimized out>) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:3086
#3  0x00007f8d117cd639 in g_main_context_iteration (context=0x2e56f80, may_block=1) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:3154
#4  0x00007f8d154b4446 in QEventDispatcherGlib::processEvents (this=0x2b635e0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:424
#5  0x00007f8d15488882 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
#6  0x00007f8d15488abc in QEventLoop::exec (this=0x7f8cfefbedd0, flags=...) at kernel/qeventloop.cpp:201
#7  0x00007f8d1539f924 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:492
#8  0x00007f8d1546ac2f in QInotifyFileSystemWatcherEngine::run (this=0x2d4cc30) at io/qfilesystemwatcher_inotify.cpp:248
#9  0x00007f8d153a2175 in QThreadPrivate::start (arg=0x2d4cc30) at thread/qthread_unix.cpp:320
#10 0x00007f8d11c98d8c in start_thread (arg=0x7f8cfefbf700) at pthread_create.c:304
#11 0x00007f8d1903c04d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#12 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f8cfe72f700 (LWP 14830)):
[KCrash Handler]
#6  memcpy () at ../sysdeps/x86_64/memcpy.S:267
#7  0x00007f8cfd49e5e9 in (anonymous namespace)::strigi_tiffReadProc (handle=<value optimized out>, buf=0x7f8d0010f850, size=<value optimized out>) at /usr/include/bits/string3.h:52
#8  0x00007f8d08888238 in OJPEGReadBufferFill (sp=0x7f8d0010f270) at tif_ojpeg.c:1880
#9  0x00007f8d08889148 in OJPEGReadBytePeek (tif=0x7f8d00153080) at tif_ojpeg.c:1966
#10 OJPEGReadHeaderInfoSec (tif=0x7f8d00153080) at tif_ojpeg.c:1231
#11 0x00007f8d0888a276 in OJPEGSubsamplingCorrect (tif=0x7f8d00153080) at tif_ojpeg.c:959
#12 0x00007f8d0888a792 in OJPEGVGetField (tif=<value optimized out>, tag=<value optimized out>, ap=<value optimized out>) at tif_ojpeg.c:466
#13 0x00007f8d088668e4 in TIFFVGetFieldDefaulted (tif=0x7f8d00153080, tag=530, ap=0x7f8cfe72e560) at tif_aux.c:147
#14 0x00007f8d08867674 in TIFFGetFieldDefaulted (tif=<value optimized out>, tag=<value optimized out>) at tif_aux.c:278
#15 0x00007f8d08895292 in TIFFScanlineSize (tif=0x7f8d00153080) at tif_strip.c:237
#16 0x00007f8d0886e3cc in TIFFReadDirectory (tif=0x7f8d00153080) at tif_dirread.c:766
#17 0x00007f8d0888c4d0 in TIFFClientOpen (name=0x7f8d00075888 "_MG_0803.CR2", mode=0x7f8cfd49f36e "r", clientdata=0x7f8d00060300, readproc=<value optimized out>, writeproc=0x7f8cfd49e480 <(anonymous namespace)::strigi_tiffWriteProc(thandle_t, tdata_t, tsize_t)>, seekproc=0x7f8cfd49e490 <(anonymous namespace)::strigi_tiffSeekProc(thandle_t, toff_t, int)>, closeproc=0x7f8cfd49e4e0 <(anonymous namespace)::strigi_tiffCloseProc(thandle_t)>, sizeproc=0x7f8cfd49e4f0 <(anonymous namespace)::strigi_tiffSizeProc(thandle_t)>, mapproc=0x7f8cfd49e500 <(anonymous namespace)::strigi_tiffMapProc(thandle_t, tdata_t*, toff_t*)>, unmapproc=0x7f8cfd49e510 <(anonymous namespace)::strigi_tiffUnmapProc(thandle_t, tdata_t, toff_t)>) at tif_open.c:436
#18 0x00007f8cfd49ecc0 in TiffEndAnalyzer::analyze (this=0x7f8d00038330, ar=..., in=0x7f8d00060300) at ../../../strigi-analyzer/tiff/tiffendanalyzer.cpp:201
#19 0x00007f8d13447eca in Strigi::StreamAnalyzerPrivate::analyze (this=0x7f8d00008730, idx=..., input=0x7f8d00060300) at /build/buildd/strigi-0.7.2/src/streamanalyzer/streamanalyzer.cpp:421
#20 0x00007f8d170cc7d1 in KFileMetaInfoPrivate::init (this=0x7f8d000027d0, stream=..., url=..., mtime=<value optimized out>, w=<value optimized out>) at ../../kio/kio/kfilemetainfo.cpp:257
#21 0x00007f8d170cd02f in KFileMetaInfo::KFileMetaInfo (this=0x7f8cfe72ece0, path=<value optimized out>, w=...) at ../../kio/kio/kfilemetainfo.cpp:286
#22 0x00007f8d1719a4b6 in KLoadFileMetaDataThread::run (this=0x34eb5f0) at ../../kio/kfile/kloadfilemetadatathread.cpp:143
#23 0x00007f8d153a2175 in QThreadPrivate::start (arg=0x34eb5f0) at thread/qthread_unix.cpp:320
#24 0x00007f8d11c98d8c in start_thread (arg=0x7f8cfe72f700) at pthread_create.c:304
#25 0x00007f8d1903c04d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#26 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f8d19738780 (LWP 19367)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f8d153a282b in wait (this=<value optimized out>, mutex=0x2603980, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:88
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x2603980, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:160
#3  0x00007f8d153a1910 in QThread::wait (this=<value optimized out>, time=18446744073709551615) at thread/qthread_unix.cpp:722
#4  0x00007f8d1545e5d0 in QFileSystemWatcher::~QFileSystemWatcher (this=0x271d580, __in_chrg=<value optimized out>) at io/qfilesystemwatcher.cpp:446
#5  0x00007f8d1545e6a9 in QFileSystemWatcher::~QFileSystemWatcher (this=0x271d580, __in_chrg=<value optimized out>) at io/qfilesystemwatcher.cpp:462
#6  0x00007f8d1549bc14 in QObjectPrivate::deleteChildren (this=0x2603790) at kernel/qobject.cpp:1964
#7  0x00007f8d154a05f4 in QObject::~QObject (this=0x271f890, __in_chrg=<value optimized out>) at kernel/qobject.cpp:946
#8  0x00007f8d14b717c9 in Solid::Backends::Fstab::FstabWatcher::~FstabWatcher (this=0x271f890, __in_chrg=<value optimized out>) at ../../../solid/solid/backends/fstab/fstabwatcher.cpp:51
#9  0x00007f8d18f8f961 in __run_exit_handlers (status=1) at exit.c:78
#10 exit (status=1) at exit.c:100
#11 0x00007f8d15eb4d48 in qt_xio_errhandler () at kernel/qapplication_x11.cpp:781
#12 0x00007f8d16b66638 in KApplication::xioErrhandler (this=0x7fff810c8a90, dpy=0x24a18f0) at ../../kdeui/kernel/kapplication.cpp:419
#13 0x00007f8d12b8ad0e in _XIOError () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#14 0x00007f8d12b885cd in _XEventsQueued () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#15 0x00007f8d12b78eef in XEventsQueued () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#16 0x00007f8d15eefc4c in x11EventSourceCheck (s=0x247e880) at kernel/qguieventdispatcher_glib.cpp:85
#17 0x00007f8d117cc854 in g_main_context_check (context=0x247d5b0, max_priority=0, fds=<value optimized out>, n_fds=<value optimized out>) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:2961
#18 0x00007f8d117cd122 in g_main_context_iterate (context=0x247d5b0, block=<value optimized out>, dispatch=1, self=<value optimized out>) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:3088
#19 0x00007f8d117cd639 in g_main_context_iteration (context=0x247d5b0, may_block=1) at /build/buildd/glib2.0-2.28.5/./glib/gmain.c:3154
#20 0x00007f8d154b43ef in QEventDispatcherGlib::processEvents (this=0x2427db0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:422
#21 0x00007f8d15eefdfe in QGuiEventDispatcherGlib::processEvents (this=<value optimized out>, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#22 0x00007f8d15488882 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
#23 0x00007f8d15488abc in QEventLoop::exec (this=0x7fff810c8a20, flags=...) at kernel/qeventloop.cpp:201
#24 0x00007f8d1548cecb in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1008
#25 0x00007f8d1932c995 in kdemain (argc=3, argv=0x7fff810c8fb8) at ../../../dolphin/src/main.cpp:98
#26 0x00007f8d18f74eff in __libc_start_main (main=0x400730 <main(int, char**)>, argc=3, ubp_av=0x7fff810c8fb8, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7fff810c8fa8) at libc-start.c:226
#27 0x0000000000400659 in _start ()

Reported using DrKonqi
Comment 1 Christoph Feck 2011-04-08 04:04:27 UTC
If possible, please provide a link to that .CR2 file (or any other file that causes the same crash).

@Peter, is there a command line utility to read Strigi meta data from a file, so that we can eventually get backtraces when trying to reproduce on trunk?
Comment 2 Philip Muškovac 2011-04-08 10:54:18 UTC
Here's one:
http://yofel.dyndns.org/misc/_MG_0809.CR2
Comment 3 Peter Penz 2011-04-08 11:10:16 UTC
@Christoph: xmlindexer should work for this (but I've never used it myself). It is important to clip the file to 64 KB before testing it, as this kind of limitation is where some Strigi analysers fail. A Strigi developer send me a mail some time ago where he tested it like this:
$ split -b64K oha-common-lib-2.0-SNAPSHOT.jar
$ xmlindexer xaa > /tmp/foo
Comment 4 Christoph Feck 2011-04-08 16:33:52 UTC
Okey, I tried to reproduce with the test file and the steps from comment #3.

xmlindexer correctly outputs (among others) "nfo#width" and "nfo#height" tags with their 3888 and 2592 values on the xaa file. Dolphin, however, shows no metadata, so I assume that something there crashes even while xmlindexer does not. That's why I am not so sure that Strigi is to blame in this case.

I also tried renaming the 64K xaa file to xaa.tiff or xaa.CR2, but Dolphin and the file properties dialog refuse to show any metadata.
Comment 5 Peter Penz 2011-04-08 16:55:55 UTC
@Christoph: I think the backtrace shows clear that the Strigi analyzer is crashing. Did you assure that 64 KB are used? Probably xmlindexer behaves different with 64 KB in comparison to limiting the stream to 64 KB like done in KFileMetaInfo.
Comment 6 Christoph Feck 2011-04-08 16:59:16 UTC
If limiting vs. clipping would make a difference, then Dolphin would show meta info for the xaa.CR2 file (which is exactly 65536 bytes large). xmlindexer does.
Comment 7 Christoph Feck 2011-04-08 17:01:33 UTC
Created attachment 58714 [details]
These are the first 65536 of the CR2 test file.
Comment 8 Peter Penz 2011-04-08 17:23:41 UTC
Hm, I get a reproducible crash in the analyzer when reading the metadata of your attachment. I did not say that the 64 KB limit is necessary for crashing an analyzer (it just turned out that it is quite often the rootcause)... The code in KFileMetaInfo to access the Strigi analyzers was written by Jos van den Oever himself and I don't know how it is different to the code in xmlindexer - probably the analyzer crashes too in the xmlindexer but the xmlindexer just outputs all values that have been read already?

Wild guesses of course, but I must admit that after 3 years of those metadata crashes my motivation to investigate into them further is not very high ;-)
(see http://ppenz.blogspot.com/2011/03/dont-crash-when-reading-metadata.html for more info - so at least in Dolphin for 4.7 it won't crash anymore).

I got in contact with some Strigi developers a few weeks ago and they could reproduce the crashes also with the xmlindexer, however it seems some analyzers are unmaintained and won't be fixed :-/
Comment 9 Christos Lazaridis 2011-09-01 15:09:54 UTC
Is there a way to completely preventing dolphin to attempt reading metadata on CR2 files as a workaround until (if) a fix is provided? 

I use it quite a bit and it makes dolphin pretty much unusable as a file manager when dealing with photos.
Comment 10 Peter Penz 2011-09-01 16:33:03 UTC
> Is there a way to completely preventing dolphin to attempt
> reading metadata on CR2 files as a workaround until (if) a fix is provided?

Yes, please turn off tooltips and the information panel.

This is an issue in the corresponding Strigi analyzer
that Dolphin uses to get the metadata of a file. Dolphin for KDE 4.7 won't
crash anymore in this case (see
http://ppenz.blogspot.com/2011/03/dont-crash-when-reading-metadata.html for
details).
Comment 11 Christoph Feck 2011-09-01 16:49:09 UTC
We keep this bug open until we know why KFileMetaInfo crashes, while xmlindexer does not.
Comment 12 Valentin 2011-09-19 21:37:18 UTC
Created attachment 63782 [details]
New crash information added by DrKonqi

dolphin (1.6) on KDE Platform 4.6.00 (4.6.0) "release 6" using Qt 4.7.1

- What I was doing when the application crashed:

Dolphin crash when I try to preview .cr2 from archive with Darktable handbook (http://sourceforge.net/projects/darktable/files/darktable/book/1.0/). Files from my EOS 450D can be previwed normally.

-- Backtrace (Reduced):
#7  0x00007f8cd158f6e9 in (anonymous namespace)::strigi_tiffReadProc (handle=<value optimized out>, buf=0x7f8cd4196050, size=<value optimized out>) at /usr/include/bits/string3.h:52
#8  0x0000003868629c51 in OJPEGReadBufferFill (sp=0x7f8cd4195a70) at tif_ojpeg.c:1885
#9  0x000000386862ac08 in OJPEGReadBytePeek (tif=0x7f8cd41950f0) at tif_ojpeg.c:1965
#10 OJPEGReadHeaderInfoSec (tif=0x7f8cd41950f0) at tif_ojpeg.c:1231
#11 0x000000386862bdd6 in OJPEGSubsamplingCorrect (tif=0x7f8cd41950f0) at tif_ojpeg.c:959
Comment 13 Valentin 2011-09-19 21:40:01 UTC
*** This bug has been confirmed by popular vote. ***
Comment 14 bugzilla 2011-11-20 12:22:52 UTC
Created attachment 65868 [details]
New crash information added by DrKonqi

konqueror (4.6.5 (4.6.5) "release 7") on KDE Platform 4.6.5 (4.6.5) "release 7" using Qt 4.7.1

- What I was doing when the application crashed:
Hovering over a specific .CR2 File in Konqueror from a Canon EOS 7D.
OpenSUSE 11.4, 64bit
The File can be retrieved from http://www.matthias-keller.ch/konqueror-crash/IMG_0355.CR2
This bug may or may not be related to #260872. I tried using another version of libstrigi0 (the one from the ISO: 0.7.3.99-0.2-x86_64 as well as the one from KDE SC 4.6 repo 0.7.3.99-2.18-x86_64 - they both show the same behavior in konqueror.

-- Backtrace (Reduced):
#7  0x00007ff82245e6e9 in (anonymous namespace)::strigi_tiffReadProc (handle=<value optimized out>, buf=0xf822c0, size=<value optimized out>) at /usr/include/bits/string3.h:52
#8  0x00007ff8293f5c51 in OJPEGReadBufferFill (sp=0xf81ce0) at tif_ojpeg.c:1885
#9  0x00007ff8293f6c08 in OJPEGReadBytePeek (tif=0xf85750) at tif_ojpeg.c:1965
#10 OJPEGReadHeaderInfoSec (tif=0xf85750) at tif_ojpeg.c:1231
#11 0x00007ff8293f7dd6 in OJPEGSubsamplingCorrect (tif=0xf85750) at tif_ojpeg.c:959
Comment 15 Beat Wolf 2011-11-27 17:27:22 UTC
*** Bug 287695 has been marked as a duplicate of this bug. ***
Comment 16 Myriam Schweingruber 2011-12-25 12:30:49 UTC
*** Bug 288855 has been marked as a duplicate of this bug. ***
Comment 17 Christoph Feck 2012-07-19 15:41:34 UTC
*** Bug 303805 has been marked as a duplicate of this bug. ***
Comment 18 Dawit Alemayehu 2013-07-07 18:15:07 UTC
Strigi analyzers are no more in KDE v4.10 according to a posting by the current Nepomuk maintainer ; so can this bug report be closed now?

[1] http://vhanda.in/blog/2013/05/we-need-more-indexers/
Comment 19 Andrew Crouthamel 2018-09-24 02:01:12 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 set the bug status 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 20 Andrew Crouthamel 2018-10-27 02:26:01 UTC
Dear Bug Submitter,

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!