Summary: | Crash when specific pictures are opened in Image Editor | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Kristian <kde-bugs> |
Component: | DImg-Processing | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | caulier.gilles, hanser, marcel.wiesweg |
Priority: | NOR | ||
Version: | 2.5.0 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 2.7.0 | |
Sentry Crash Report: | |||
Attachments: | image editor screenshot with test image : no problem... |
Description
Kristian
2012-03-03 21:50:21 UTC
It crash when image is rotated by editor. Which type of image you load ? Can you share file please to test in local ? Gilles Caulier once upon a time, there was a problem with rotation angle returned by exiv2 with not initialised huge value As you said, it has something to do with rotation. It happens when I open images which are automatically rotated according to their EXIF information. However, I can't reproduce it all the time. I'll send an image by mail to Gilles, because it's too large for Bugzilla. Created attachment 69278 [details]
image editor screenshot with test image : no problem...
No problem on my computer. Look all components version used by digiKam.
I suspect a problem with shared lib libkexiv2 and Exiv2. Check your system...
Gilles Caulier
Unfortunately, I can't reproduce the bug right know, but I had a crash this morning. I didn't change any components since then. Here they are: digiKam version 2.5.0 Exiv2 kann in JP2 speichern: Ja Exiv2 kann in JPEG speichern: Ja Exiv2 kann in PGF speichern: Ja Exiv2 kann in PNG speichern: Ja Exiv2 kann in TIFF speichern: Ja Exiv2 unterstützt XMP-Metadaten: Ja LibCImg: 130 LibClapack: Interne Bibliothek LibExiv2: 0.22 LibJPEG: 80 LibJasper: 1.900.1 LibKDE: 4.8.00 (4.8.0 LibKExiv2: 2.1.0 LibKGeoMap: 2.0.0 LibKdcraw: 2.0.1 LibLCMS: 119 LibPGF: 6.11.42 - Interne Bibliothek LibPNG: 1.5.7 LibQt: 4.8.0 LibRaw: 0.14.4 LibTIFF: LIBTIFF, Version 4.0.0 Copyright (c) 1988-1996 Sam Leffler Copyright (c) 1991-1996 Silicon Graphics, Inc. Marble-Funktion: 0.12.97 (0.13 Release Candidate 2) Parallelisiertes Entfernen von Mosaikmustern: Ja Datenbanktreiber: QSQLITE LibGphoto2: 2.4.11 LibKface: 2.0.0 LibKipi: 1.3.0 LibOpenCV: 2.3.1 Libface: 0.2 Debug information is missing from your backtrace: there is no line number. A backtrace with this information, and/or one obtained when running digikam under gdb, may provide more information. I could reproduce it another time. Here's a more detailed backtrace: Application: digiKam (digikam), signal: Segmentation fault Using host libthread_db library "/lib/libthread_db.so.1". [Current thread is 1 (Thread 0x7ffa7438d980 (LWP 3217))] Thread 12 (Thread 0x7ffa4fcac700 (LWP 3218)): #0 0x00007ffa6b738a14 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #1 0x00007ffa6e7af24b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4 #2 0x000000000059cbc4 in Digikam::ScanController::run (this=0x2aa47b0) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/digikam/database/scancontroller.cpp:647 #3 0x00007ffa6e7aed3b in ?? () from /usr/lib/libQtCore.so.4 #4 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #5 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #6 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 11 (Thread 0x7ffa4f4ab700 (LWP 3219)): #0 0x00007ffa6d9e2183 in poll () from /lib/libc.so.6 #1 0x00007ffa68d75dc8 in ?? () from /usr/lib/libglib-2.0.so.0 #2 0x00007ffa68d76289 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #3 0x00007ffa6e8db126 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #4 0x00007ffa6e8aae52 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #5 0x00007ffa6e8ab0a7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #6 0x00007ffa6e7abd17 in QThread::exec() () from /usr/lib/libQtCore.so.4 #7 0x00007ffa6e88ac9f in ?? () from /usr/lib/libQtCore.so.4 #8 0x00007ffa6e7aed3b in ?? () from /usr/lib/libQtCore.so.4 #9 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #10 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #11 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 10 (Thread 0x7ffa3fc4b700 (LWP 3235)): [KCrash Handler] #6 Digikam::DImg::rotate (this=0x7dc2170, angle=<optimized out>) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/libs/dimg/dimg.cpp:2429 #7 0x00007ffa71a5f1da in Digikam::DImg::rotateAndFlip (this=0x7dc2170, orientation=<optimized out>) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/libs/dimg/dimg.cpp:2647 #8 0x00007ffa71bb30c4 in Digikam::LoadSaveThread::exifRotate (image=..., filePath=...) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/libs/threadimageio/loadsavethread.cpp:276 #9 0x00007ffa71bc1398 in Digikam::PreviewLoadingTask::execute (this=0x7dc1f70) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/libs/threadimageio/previewtask.cpp:185 #10 0x00007ffa71bb371a in Digikam::LoadSaveThread::run (this=0x2995d70) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/libs/threadimageio/loadsavethread.cpp:118 #11 0x00007ffa71be3be7 in Digikam::DynamicThread::DynamicThreadPriv::run (this=0x2995de0) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/libs/threads/dynamicthread.cpp:328 #12 0x00007ffa6e7a2502 in ?? () from /usr/lib/libQtCore.so.4 #13 0x00007ffa6e7aed3b in ?? () from /usr/lib/libQtCore.so.4 #14 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #15 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #16 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 9 (Thread 0x7ffa3f44a700 (LWP 3236)): #0 0x00007ffa697a8ca6 in ?? () from /usr/lib/libgomp.so.1 #1 0x00007ffa697a77ce in ?? () from /usr/lib/libgomp.so.1 #2 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #3 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #4 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 8 (Thread 0x7ffa3ec49700 (LWP 3237)): #0 0x00007ffa697a8ca6 in ?? () from /usr/lib/libgomp.so.1 #1 0x00007ffa697a77ce in ?? () from /usr/lib/libgomp.so.1 #2 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #3 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #4 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 7 (Thread 0x7ffa3e448700 (LWP 3238)): #0 0x00007ffa697a8ca6 in ?? () from /usr/lib/libgomp.so.1 #1 0x00007ffa697a77ce in ?? () from /usr/lib/libgomp.so.1 #2 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #3 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #4 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 6 (Thread 0x7ffa1d66d700 (LWP 3253)): #0 0x00007ffa6b738d81 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #1 0x00007ffa6e7af1af in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4 #2 0x00007ffa6e7a25cf in ?? () from /usr/lib/libQtCore.so.4 #3 0x00007ffa6e7aed3b in ?? () from /usr/lib/libQtCore.so.4 #4 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #5 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #6 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 5 (Thread 0x7ffa1ce64700 (LWP 3254)): #0 0x00007ffa6b738d81 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #1 0x00007ffa6e7af1af in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4 #2 0x00007ffa6e7a25cf in ?? () from /usr/lib/libQtCore.so.4 #3 0x00007ffa6e7aed3b in ?? () from /usr/lib/libQtCore.so.4 #4 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #5 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #6 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 4 (Thread 0x7ffa17650700 (LWP 3260)): #0 0x00007ffa697a8ca6 in ?? () from /usr/lib/libgomp.so.1 #1 0x00007ffa697a77ce in ?? () from /usr/lib/libgomp.so.1 #2 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #3 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #4 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 3 (Thread 0x7ffa16e4f700 (LWP 3261)): #0 0x00007ffa697a8ca6 in ?? () from /usr/lib/libgomp.so.1 #1 0x00007ffa697a77ce in ?? () from /usr/lib/libgomp.so.1 #2 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #3 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #4 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 2 (Thread 0x7ffa1664e700 (LWP 3262)): #0 0x00007ffa697a8ca6 in ?? () from /usr/lib/libgomp.so.1 #1 0x00007ffa697a77ce in ?? () from /usr/lib/libgomp.so.1 #2 0x00007ffa56cbd454 in ?? () from /usr/lib/libGL.so.1 #3 0x00007ffa6b734daa in start_thread () from /lib/libpthread.so.0 #4 0x00007ffa6d9ea09d in clone () from /lib/libc.so.6 Thread 1 (Thread 0x7ffa7438d980 (LWP 3217)): #0 0x00007ffa6b738a14 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #1 0x00007ffa6e7af24b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4 #2 0x00007ffa6e7a1c8e in ?? () from /usr/lib/libQtCore.so.4 #3 0x00007ffa6e7a36b4 in QThreadPool::~QThreadPool() () from /usr/lib/libQtCore.so.4 #4 0x00007ffa6e7a36f9 in QThreadPool::~QThreadPool() () from /usr/lib/libQtCore.so.4 #5 0x00007ffa6e8be5c5 in QObjectPrivate::deleteChildren() () from /usr/lib/libQtCore.so.4 #6 0x00007ffa6e8c482c in QObject::~QObject() () from /usr/lib/libQtCore.so.4 #7 0x00007ffa71be1a52 in destroy () at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/libs/threads/threadmanager.cpp:241 #8 0x00007ffa6d93d4c1 in __run_exit_handlers () from /lib/libc.so.6 #9 0x00007ffa6d93d545 in exit () from /lib/libc.so.6 #10 0x00007ffa6f31b2f8 in ?? () from /usr/lib/libQtGui.so.4 #11 0x00007ffa6fffc818 in KApplication::xioErrhandler(_XDisplay*) () from /usr/lib/libkdeui.so.5 #12 0x00007ffa6bcd2a6e in _XIOError () from /usr/lib/libX11.so.6 #13 0x00007ffa6bcd09db in _XReply () from /usr/lib/libX11.so.6 #14 0x00007ffa6bcc64b9 in XQueryPointer () from /usr/lib/libX11.so.6 #15 0x00007ffa6f334d1f in QCursor::pos() () from /usr/lib/libQtGui.so.4 #16 0x00007ffa6f2b0c45 in QApplicationPrivate::sendSyntheticEnterLeave(QWidget*) () from /usr/lib/libQtGui.so.4 #17 0x00007ffa6f302932 in QWidget::setVisible(bool) () from /usr/lib/libQtGui.so.4 #18 0x00007ffa53336c7c in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so #19 0x00007ffa533367bf in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so #20 0x00007ffa6e8bff11 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #21 0x00007ffa6f6cbd72 in QLineEdit::textChanged(QString const&) () from /usr/lib/libQtGui.so.4 #22 0x00007ffa6f6cc019 in ?? () from /usr/lib/libQtGui.so.4 #23 0x00007ffa6e8bff11 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #24 0x00007ffa6f93d675 in QLineControl::textChanged(QString const&) () from /usr/lib/libQtGui.so.4 #25 0x00007ffa6f6d0c3b in QLineControl::finishChange(int, bool, bool) () from /usr/lib/libQtGui.so.4 #26 0x00007ffa6f6d0ed0 in QLineControl::internalSetText(QString const&, int, bool) () from /usr/lib/libQtGui.so.4 #27 0x00007ffa6f693751 in ?? () from /usr/lib/libQtGui.so.4 #28 0x00007ffa6f6938a7 in QComboBox::setCurrentIndex(int) () from /usr/lib/libQtGui.so.4 #29 0x00007ffa71bf832c in Digikam::DZoomBar::setZoom (this=0x83a8000, zoom=<optimized out>, zmin=<optimized out>, zmax=<optimized out>) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/libs/widgets/common/dzoombar.cpp:227 #30 0x00007ffa6e8bff11 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #31 0x00007ffa71ca4f3b in Digikam::EditorStackView::signalZoomChanged (this=<optimized out>, _t1=false, _t2=false, _t3=0.1918904958677686) at $HOME/build/digikam-2.5/src/build/core/digikam/editorstackview.moc:115 #32 0x00007ffa6e8bff11 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #33 0x00007ffa71c97ba0 in Digikam::Canvas::signalZoomChanged (this=<optimized out>, _t1=0.1918904958677686) at $HOME/build/digikam-2.5/src/build/core/digikam/canvas.moc:213 #34 0x00007ffa71c9ae90 in Digikam::Canvas::slotImageLoaded (this=0x7f8aaa0, filePath=..., success=true) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/utilities/imageeditor/canvas/canvas.cpp:275 #35 0x00007ffa6e8bff11 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #36 0x00007ffa71c90fc6 in Digikam::DImgInterface::signalImageLoaded (this=<optimized out>, _t1=..., _t2=true) at $HOME/build/digikam-2.5/src/build/core/digikam/dimginterface.moc:177 #37 0x00007ffa71c91713 in Digikam::DImgInterface::slotImageLoaded (this=0x7e055b0, loadingDescription=..., img=...) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/utilities/imageeditor/canvas/dimginterface.cpp:450 #38 0x00007ffa6e8c50d6 in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4 #39 0x00007ffa6f2af8c4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #40 0x00007ffa6f2b4743 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #41 0x00007ffa6fffe556 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5 #42 0x00007ffa6e8ac06c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 #43 0x00007ffa6e8af90a in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4 #44 0x00007ffa6e8dac93 in ?? () from /usr/lib/libQtCore.so.4 #45 0x00007ffa68d758bd in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #46 0x00007ffa68d760b8 in ?? () from /usr/lib/libglib-2.0.so.0 #47 0x00007ffa68d76289 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #48 0x00007ffa6e8db0bf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #49 0x00007ffa6f352f8e in ?? () from /usr/lib/libQtGui.so.4 #50 0x00007ffa6e8aae52 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #51 0x00007ffa6e8ab0a7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #52 0x00007ffa6e8afc05 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4 #53 0x000000000048f641 in main (argc=5, argv=0x7fff7b078898) at $HOME/build/digikam-2.5/src/digikam-2.5.0/core/digikam/main/main.cpp:232 Git commit fb1903d64bc0d420f11ace37cf7cee15ab69a65c by Marcel Wiesweg. Committed on 25/03/2012 at 22:07. Pushed by mwiesweg into branch 'master'. Use new_failureTolerant to allocate data for rotation M +4 -4 libs/dimg/dimg.cpp M +0 -44 libs/dimg/loaders/dimgloader.cpp M +34 -2 libs/dimg/loaders/dimgloader.h http://commits.kde.org/digikam/fb1903d64bc0d420f11ace37cf7cee15ab69a65c Crash happens in image rotation. Out-of-memory could happen; I would expect the code to abort then by throwing bad_alloc. Nonetheless we should use the safe allocation here as well. Are the affected images very large? The size of the pictures is 10,2 Megapixel, about 2,5 MiB - 5 MiB. Official digiKam 2.6.0 release is out since few days now : http://www.digikam.org/drupal/node/656 Please, check if this entry still valid, or update report accordingly. Thanks in advance. Gilles Caulier not seen here since a long time I can't reproduce it anymore. (However, reproducing this bug wasn't always possible.) |