Bug 249655 - Hovering over .CR2 Raw Image File from Canon EOS 400D Crashes Dolphin
Summary: Hovering over .CR2 Raw Image File from Canon EOS 400D Crashes Dolphin
Status: RESOLVED FIXED
Alias: None
Product: dolphin
Classification: Applications
Component: general (show other bugs)
Version: 16.12.2
Platform: Ubuntu Linux
: NOR normal
Target Milestone: ---
Assignee: Peter Penz
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-08-31 18:51 UTC by Daniel Buus
Modified: 2011-02-27 20:11 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 4.7.0
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Buus 2010-08-31 18:51:43 UTC
Version:           unspecified (using KDE 4.5.0) 
OS:                Linux

When hovering over .cr2 image files taken with my Canon EOS 400D camera, Dolphin crashes. This happens both with and without preview mode on, and both in details and icon views.

The previews, though, do show thumbnails resembling the image contents, perhaps because they're nicked from an embedded thumbnail, and the hover tries to actually read the image?

This is the part dumped on the console when I hover over a .cr2 file:


daniel@laptop ~ $ "/usr/bin/dolphin(12937)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "Invalid iterator."
"/usr/bin/dolphin(12937)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "Invalid iterator."
"/usr/bin/dolphin(12937)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "Invalid iterator."
"/usr/bin/dolphin(12937)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "org.freedesktop.DBus.Error.ServiceUnknown - The name org.kde.nepomuk.services.nepomukstorage was not provided by any .service files"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "Unsupported operation (2)": "Invalid model"
"/usr/bin/dolphin(12937)" Soprano: "Invalid iterator."
IMG_8163.CR2: Warning, incorrect count for field "BitsPerSample" (3, expecting 1); tag trimmed.
TIFFReadDirectory: Warning, Photometric tag is missing, assuming data is YCbCr.
TIFFReadDirectory: Warning, SamplesPerPixel tag is missing, assuming correct SamplesPerPixel value is 3.
KCrash: Application 'dolphin' crashing...
KCrash: Attempting to start /usr/lib/kde4/libexec/drkonqi from kdeinit
sock_file=/home/daniel/.kde/socket-laptop/kdeinit4__0
QSocketNotifier: Invalid socket 14 and type 'Read', disabling...
daniel@laptop ~ $ 


Reproducible: Always

Steps to Reproduce:
Hover over attached file :)

Actual Results:  
Dolphin crashes

Expected Results:  
It wouldn't crash :)

OS: Linux (x86_64) release 2.6.34-zen1-zen
Compiler: cc
Comment 1 Daniel Buus 2010-08-31 18:54:31 UTC
Okay, attached file probably a bit on the large side ;) Try here:

http://rapidshare.com/files/416275644/IMG_8163.CR2
Comment 2 Christoph Feck 2010-08-31 22:27:14 UTC
Reproduced using the file from comment #1.

The backtrace indicates a problem in libtiff (my installed version was libtiff3-3.9.2), which you should report to libtiff developers at http://www.libtiff.org/bugs.html

If you got a different backtrace, indicating a problem in Dolphin or other KDE components, please attach the backtrace from the KDE crash handler and reopen the bug.

Backtrace:

Application: Dolphin (kdeinit4), signal: Segmentation fault
[Current thread is 1 (Thread 0xb575a710 (LWP 11706))]

Thread 4 (Thread 0xb0698b70 (LWP 11751)):
#0  0xb59da22b in clock_gettime (clock_id=1, tp=0xb0697f90) at ../sysdeps/unix/clock_gettime.c:100
#1  0xb6d107a7 in do_gettime () at /local/git/Qt/qt/src/corelib/tools/qelapsedtimer_unix.cpp:105
#2  0xb6d10823 in qt_gettime () at /local/git/Qt/qt/src/corelib/tools/qelapsedtimer_unix.cpp:119
#3  0xb6deeda7 in QTimerInfoList::updateCurrentTime (this=0x81e97ac) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_unix.cpp:339
#4  0xb6def10d in QTimerInfoList::timerWait (this=0x81e97ac, tm=...) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_unix.cpp:442
#5  0xb6dec1e5 in timerSourcePrepareHelper (src=0x81e9778, timeout=0xb069810c) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:136
#6  0xb6dec350 in timerSourcePrepare (source=0x81e9778, timeout=0xb069810c) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:169
#7  0xb592e0c0 in IA__g_main_context_prepare (context=0x81e6e20, priority=0xb069817c) at gmain.c:2280
#8  0xb592ef22 in g_main_context_iterate (context=0x81e6e20, block=1, dispatch=1, self=0x81e9f60) at gmain.c:2571
#9  0xb592f60e in IA__g_main_context_iteration (context=0x81e6e20, may_block=1) at gmain.c:2654
#10 0xb6decd14 in QEventDispatcherGlib::processEvents (this=0x81b9e60, flags=...) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:417
#11 0xb6db6495 in QEventLoop::processEvents (this=0xb0698298, flags=...) at /local/git/Qt/qt/src/corelib/kernel/qeventloop.cpp:149
#12 0xb6db65d9 in QEventLoop::exec (this=0xb0698298, flags=...) at /local/git/Qt/qt/src/corelib/kernel/qeventloop.cpp:201
#13 0xb6cac628 in QThread::exec (this=0x8195250) at /local/git/Qt/qt/src/corelib/thread/qthread.cpp:490
#14 0xb6d98518 in QInotifyFileSystemWatcherEngine::run (this=0x8195250) at /local/git/Qt/qt/src/corelib/io/qfilesystemwatcher_inotify.cpp:248
#15 0xb6caecca in QThreadPrivate::start (arg=0x8195250) at /local/git/Qt/qt/src/corelib/thread/qthread_unix.cpp:274
#16 0xb6c28b25 in start_thread (arg=0xb0698b70) at pthread_create.c:297
#17 0xb5d9446e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 3 (Thread 0xaf172b70 (LWP 11827)):
#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb5d8d0b1 in select () at ../sysdeps/unix/syscall-template.S:82
#2  0xb6d93737 in QProcessManager::run (this=0xb6f3b8cc) at /local/git/Qt/qt/src/corelib/io/qprocess_unix.cpp:245
#3  0xb6caecca in QThreadPrivate::start (arg=0xb6f3b8cc) at /local/git/Qt/qt/src/corelib/thread/qthread_unix.cpp:274
#4  0xb6c28b25 in start_thread (arg=0xaf172b70) at pthread_create.c:297
#5  0xb5d9446e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 2 (Thread 0xae66db70 (LWP 12188)):
[KCrash Handler]
#7  memcpy () at ../sysdeps/i386/i686/memcpy.S:75
#8  0x084f1978 in ?? ()
#9  0xb08f2870 in OJPEGReadBufferFill (sp=0x0) at tif_ojpeg.c:1880
#10 0xb08f3762 in OJPEGReadBytePeek (tif=0x84f0ee0) at tif_ojpeg.c:1960
#11 OJPEGReadHeaderInfoSec (tif=0x84f0ee0) at tif_ojpeg.c:1231
#12 0xb08f477f in OJPEGSubsamplingCorrect (tif=0x84f0ee0) at tif_ojpeg.c:959
#13 0xb08f49e6 in OJPEGVGetField (tif=0x84f0ee0, tag=530, ap=0xae66cd98 "\254\315f\256\256\315f\256+&\220\260\364\337\222\260$\022O\b+&\220\260\210\021O\b\025\001") at tif_ojpeg.c:466
#14 0xb08d4411 in TIFFVGetField (tif=0x84f0ee0, tag=530, ap=0xae66cd98 "\254\315f\256\256\315f\256+&\220\260\364\337\222\260$\022O\b+&\220\260\210\021O\b\025\001") at tif_dir.c:966
#15 0xb08d445b in TIFFGetField (tif=0x84f0ee0, tag=530) at tif_dir.c:950
#16 0xb0900ece in TIFFScanlineSize (tif=0x84f0ee0) at tif_strip.c:237
#17 0xb08d71f3 in TIFFReadDirectory (tif=0x84f0ee0) at tif_dirread.c:713
#18 0xb08f6b5a in TIFFClientOpen (name=0x84af5f4 "IMG_8163.CR2", mode=0xadaedef3 "r", clientdata=0x845fa60, readproc=
    0xadaec3dc <(anonymous namespace)::strigi_tiffReadProc(thandle_t, tdata_t, tsize_t)>, writeproc=0xadaec447 <(anonymous namespace)::strigi_tiffWriteProc(thandle_t, tdata_t, tsize_t)>, seekproc=
    0xadaec451 <(anonymous namespace)::strigi_tiffSeekProc(thandle_t, toff_t, int)>, closeproc=0xadaec508 <(anonymous namespace)::strigi_tiffCloseProc(thandle_t)>, sizeproc=
    0xadaec512 <(anonymous namespace)::strigi_tiffSizeProc(thandle_t)>, mapproc=0xadaec52b <(anonymous namespace)::strigi_tiffMapProc(thandle_t, tdata_t*, toff_t*)>, unmapproc=
    0xadaec535 <(anonymous namespace)::strigi_tiffUnmapProc(thandle_t, tdata_t, toff_t)>) at tif_open.c:436
#19 0xadaecc1b in TiffEndAnalyzer::analyze (this=0x847f780, ar=..., in=0x845fa60) at /local/svn/kde/trunk/KDE/kdegraphics/strigi-analyzer/tiff/tiffendanalyzer.cpp:201
#20 0xb5251b1d in Strigi::StreamAnalyzerPrivate::analyze (this=0x845ec50, idx=..., input=0x845fa60) at /local/svn/kde/trunk/kdesupport/strigi/libstreamanalyzer/lib/streamanalyzer.cpp:424
#21 0xb5251671 in Strigi::StreamAnalyzer::analyze (this=0xae66d0f8, idx=..., input=0xae66d0ac) at /local/svn/kde/trunk/kdesupport/strigi/libstreamanalyzer/lib/streamanalyzer.cpp:365
#22 0xb54c7b30 in KFileMetaInfoPrivate::init (this=0x8421890, stream=..., url=..., mtime=1283283232, w=...) at /local/svn/kde/trunk/KDE/kdelibs/kio/kio/kfilemetainfo.cpp:256
#23 0xb54c7de1 in KFileMetaInfo::KFileMetaInfo (this=0xae66d1f4, path=..., w=...) at /local/svn/kde/trunk/KDE/kdelibs/kio/kio/kfilemetainfo.cpp:285
#24 0xb5592ae1 in KLoadFileMetaDataThread::run (this=0x84268c8) at /local/svn/kde/trunk/KDE/kdelibs/kio/kfile/kloadfilemetadatathread.cpp:142
#25 0xb6caecca in QThreadPrivate::start (arg=0x84268c8) at /local/git/Qt/qt/src/corelib/thread/qthread_unix.cpp:274
#26 0xb6c28b25 in start_thread (arg=0xae66db70) at pthread_create.c:297
#27 0xb5d9446e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 1 (Thread 0xb575a710 (LWP 11706)):
#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb6c2d125 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:122
#2  0xb6cb0015 in QWaitConditionPrivate::wait (this=0x80bbfa0, time=4294967295) at /local/git/Qt/qt/src/corelib/thread/qwaitcondition_unix.cpp:88
#3  0xb6cafe19 in QWaitCondition::wait (this=0x80bbe48, mutex=0x80bbe30, time=4294967295) at /local/git/Qt/qt/src/corelib/thread/qwaitcondition_unix.cpp:160
#4  0xb6caf6fa in QThread::wait (this=0xb6f3b8cc, time=4294967295) at /local/git/Qt/qt/src/corelib/thread/qthread_unix.cpp:660
#5  0xb6d934fa in QProcessManager::~QProcessManager (this=0xb6f3b8cc, __in_chrg=<value optimized out>) at /local/git/Qt/qt/src/corelib/io/qprocess_unix.cpp:208
#6  0xb5cef7cf in __run_exit_handlers (status=1, listp=0xb5e28304, run_list_atexit=true) at exit.c:78
#7  0xb5cef82d in exit (status=1) at exit.c:100
#8  0xb61c7cdf in qt_xio_errhandler () at /local/git/Qt/qt/src/gui/kernel/qapplication_x11.cpp:745
#9  0xb756d84b in KApplication::xioErrhandler (this=0xbfa1e8e4, dpy=0x80d0b98) at /local/svn/kde/trunk/KDE/kdelibs/kdeui/kernel/kapplication.cpp:416
#10 0xb756cb3e in kde_xio_errhandler (dpy=0x80d0b98) at /local/svn/kde/trunk/KDE/kdelibs/kdeui/kernel/kapplication.cpp:125
#11 0xb726e504 in _XIOError (dpy=0x80d0b98) at XlibInt.c:3138
#12 0xb72752b8 in process_responses (dpy=0x80d0b98, wait_for_first_event=0, current_error=0x0, current_request=0) at xcb_io.c:247
#13 0xb727570c in _XEventsQueued (dpy=0x80d0b98, mode=2) at xcb_io.c:263
#14 0xb725e2e8 in XEventsQueued (dpy=0x80d0b98, mode=2) at Pending.c:44
#15 0xb620a980 in x11EventSourceCheck (s=0x80bb8e8) at /local/git/Qt/qt/src/gui/kernel/qguieventdispatcher_glib.cpp:85
#16 0xb592e7d0 in IA__g_main_context_check (context=0x80baa98, max_priority=2147483647, fds=0x8343688, n_fds=11) at gmain.c:2469
#17 0xb592f108 in g_main_context_iterate (context=0x80baa98, block=1, dispatch=1, self=0x80b8a48) at gmain.c:2588
#18 0xb592f60e in IA__g_main_context_iteration (context=0x80baa98, may_block=1) at gmain.c:2654
#19 0xb6deccf4 in QEventDispatcherGlib::processEvents (this=0x80b7bf0, flags=...) at /local/git/Qt/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:415
#20 0xb620af54 in QGuiEventDispatcherGlib::processEvents (this=0x80b7bf0, flags=...) at /local/git/Qt/qt/src/gui/kernel/qguieventdispatcher_glib.cpp:204
#21 0xb6db6495 in QEventLoop::processEvents (this=0xbfa1e86c, flags=...) at /local/git/Qt/qt/src/corelib/kernel/qeventloop.cpp:149
#22 0xb6db65d9 in QEventLoop::exec (this=0xbfa1e86c, flags=...) at /local/git/Qt/qt/src/corelib/kernel/qeventloop.cpp:201
#23 0xb6db8e22 in QCoreApplication::exec () at /local/git/Qt/qt/src/corelib/kernel/qcoreapplication.cpp:1009
#24 0xb6141a26 in QApplication::exec () at /local/git/Qt/qt/src/gui/kernel/qapplication.cpp:3675
#25 0xb2aa8798 in kdemain (argc=5, argv=0x809caf8) at /local/svn/kde/trunk/KDE/kdebase/apps/dolphin/src/main.cpp:98
#26 0x0804dd65 in launch (argc=5, _name=0x809c9b4 "/local/kde4/bin/dolphin", args=0x809c9f7 "\001", cwd=0x0, envc=1, envs=0x809ca08 "", reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=
    0x809ca0c "duo;1283286014;884969;10658_TIME255492060") at /local/svn/kde/trunk/KDE/kdelibs/kinit/kinit.cpp:727
#27 0x0804edfa in handle_launcher_request (sock=8, who=0x8053278 "launcher") at /local/svn/kde/trunk/KDE/kdelibs/kinit/kinit.cpp:1219
#28 0x0804f53b in handle_requests (waitForPid=0) at /local/svn/kde/trunk/KDE/kdelibs/kinit/kinit.cpp:1412
#29 0x08050e35 in main (argc=4, argv=0xbfa1f074, envp=0xbfa1f088) at /local/svn/kde/trunk/KDE/kdelibs/kinit/kinit.cpp:1898
Comment 3 Daniel Buus 2010-09-02 18:27:14 UTC
Hi, Cristoph :)

Thanks for taking the time to go through this bug. I'll forward it to the libtiff developers next thing.

In the meantime, Dolphin crashing because some other utilized library is crashing, is that not a bug in itself? I mean, wouldn't it be a simple matter of try { libtiffing(); } catch (e) { discard_preview(); } ?
Comment 4 Christoph Feck 2010-09-03 02:01:11 UTC
A crash cannot be catched by a "try" block, only an exception can (which is a controlled error, but a crash is not).
Comment 5 Peter Penz 2011-02-27 20:11:36 UTC
Git commit d1254968eac95f4d9d8c47552e27f0cc40e6aed9 by Peter Penz.
Committed on 27/02/2011 at 20:01.
Pushed by ppenz into branch 'master'.

KFileMetaDataProvider: Don't crash if a Strigi analyzer crashes

Some Strigi analyzers are still unstable and crash under certain circumstances. This patch moves the reading of the meta-data into a custom process instead of doing it in a thread, which assures that a crashing Strigi analyzer does not result in crashing Dolphin or Konqueror when hovering some items.

FIXED-IN: 4.7.0
BUG: 257964
BUG: 258715
BUG: 262299
BUG: 263468
BUG: 263502
BUG: 264254
BUG: 234799
BUG: 251462
BUG: 251701
BUG: 258918
BUG: 192377
BUG: 195564
BUG: 199368
BUG: 210841
BUG: 245376
BUG: 246461
BUG: 246901
BUG: 249150
BUG: 261952
BUG: 249876
BUG: 179376
BUG: 179417
BUG: 179420
BUG: 181591
BUG: 183269
BUG: 183722
BUG: 185667
BUG: 188596
BUG: 191864
BUG: 193112
BUG: 205813
BUG: 244621
BUG: 245451
BUG: 248214
BUG: 249655
BUG: 249876
BUG: 265549
BUG: 267079

M  +11   -1    kio/CMakeLists.txt     
M  +68   -38   kio/kfile/kfilemetadataprovider.cpp     
M  +2    -1    kio/kfile/kfilemetadataprovider_p.h     
A  +174  -0    kio/kfile/kfilemetadatareader.cpp         [License: LGPL (v2+)]
M  +0    -2    kio/kfile/kfilemetadatawidget.cpp     
D  +0    -178  kio/kfile/kloadfilemetadatathread.cpp     
D  +0    -96   kio/kfile/kloadfilemetadatathread_p.h     

http://commits.kde.org/kdelibs/d1254968eac95f4d9d8c47552e27f0cc40e6aed9