Bug 349280

Summary: Crash when importing photos via MTP
Product: [Applications] digikam Reporter: Tom Vincent <kde>
Component: Import-Gphoto2Assignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles
Priority: NOR    
Version: 4.10.0   
Target Milestone: ---   
Platform: macOS (DMG)   
OS: macOS   
Latest Commit: Version Fixed In: 4.12.0
Sentry Crash Report:

Description Tom Vincent 2015-06-17 09:52:06 UTC
GPhoto correctly finds my device over MTP. However, when I press "import" from the device, digiKam segfaults.

Reproducible: Always




Application: digiKam (digikam), signal: Segmentation fault: 11
(lldb) process attach --pid 11152
Process 11152 stopped
* thread #1: tid = 0xfa2d, 0x00007fff8e72a902 libsystem_kernel.dylib`__wait4 + 10, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x00007fff8e72a902 libsystem_kernel.dylib`__wait4 + 10
libsystem_kernel.dylib`__wait4:
->  0x7fff8e72a902 <+10>: jae    0x7fff8e72a90c            ; <+20>
    0x7fff8e72a904 <+12>: movq   %rax, %rdi
    0x7fff8e72a907 <+15>: jmp    0x7fff8e725c78            ; cerror
    0x7fff8e72a90c <+20>: retq   

Executable module set to "/opt/digikam/Applications/KDE4/digikam.app/Contents/MacOS/digikam".
Architecture set to: x86_64-apple-macosx.
(lldb) set set term-width 200
(lldb) thread info
thread #1: tid = 0xfa2d, 0x00007fff8e72a902 libsystem_kernel.dylib`__wait4 + 10, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP

(lldb) bt all
* thread #1: tid = 0xfa2d, 0x00007fff8e72a902 libsystem_kernel.dylib`__wait4 + 10, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00007fff8e72a902 libsystem_kernel.dylib`__wait4 + 10
    frame #1: 0x0000000113b1289e libkdeui.5.dylib`KCrash::startProcess(int, char const**, bool) + 286
    frame #2: 0x0000000113b119c9 libkdeui.5.dylib`KCrash::defaultCrashHandler(int) + 1209
    frame #3: 0x00007fff97cd4f1a libsystem_platform.dylib`_sigtramp + 26
    frame #4: 0x0000000111275d6e libdigikamcore.4.10.0.dylib`Digikam::DCategorizedView::updateDelegateSizes() + 222
    frame #5: 0x0000000111278858 libdigikamcore.4.10.0.dylib`Digikam::DCategorizedView::viewportEvent(QEvent*) + 104
    frame #6: 0x00000001143a1715 QtGui`QAbstractScrollAreaFilter::eventFilter(QObject*, QEvent*) + 37
    frame #7: 0x0000000114fa34ac QtCore`QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 124
    frame #8: 0x0000000113f4f5db QtGui`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 235
    frame #9: 0x0000000113f52767 QtGui`QApplication::notify(QObject*, QEvent*) + 7543
    frame #10: 0x0000000114fa3186 QtCore`QCoreApplication::notifyInternal(QObject*, QEvent*) + 118
    frame #11: 0x0000000113f9cf33 QtGui`QWidgetPrivate::updateFont(QFont const&) + 451
    frame #12: 0x0000000113f9cd14 QtGui`QWidgetPrivate::resolveFont() + 100
    frame #13: 0x0000000113f9ced1 QtGui`QWidgetPrivate::updateFont(QFont const&) + 353
    frame #14: 0x0000000113f9cd14 QtGui`QWidgetPrivate::resolveFont() + 100
    frame #15: 0x0000000113fa3c25 QtGui`QWidget::event(QEvent*) + 1749
    frame #16: 0x0000000114319ded QtGui`QFrame::event(QEvent*) + 45
    frame #17: 0x00000001143a0e1b QtGui`QAbstractScrollArea::event(QEvent*) + 795
    frame #18: 0x000000011442a5ee QtGui`QAbstractItemView::event(QEvent*) + 510
    frame #19: 0x0000000113f4f5eb QtGui`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 251
    frame #20: 0x0000000113f52767 QtGui`QApplication::notify(QObject*, QEvent*) + 7543
    frame #21: 0x0000000114fa3186 QtCore`QCoreApplication::notifyInternal(QObject*, QEvent*) + 118
    frame #22: 0x0000000113f99e2f QtGui`QWidget::ensurePolished() const + 95
    frame #23: 0x0000000113fa2fbe QtGui`QWidget::setVisible(bool) + 270
    frame #24: 0x0000000113f89b4d QtGui`QStackedLayout::setCurrentIndex(int) + 349
    frame #25: 0x0000000113f899d7 QtGui`QStackedLayout::insertWidget(int, QWidget*) + 167
    frame #26: 0x00000001100a5286 digikam`Digikam::ImportStackedView::ImportStackedView(QWidget*) + 630
    frame #27: 0x00000001100a5b8d digikam`Digikam::ImportStackedView::ImportStackedView(QWidget*) + 29
    frame #28: 0x00000001100a9819 digikam`Digikam::ImportView::ImportView(Digikam::ImportUI*, Digikam::ImportImageModel*, Digikam::ImportFilterModel*, QWidget*) + 537
    frame #29: 0x00000001100aa425 digikam`Digikam::ImportView::ImportView(Digikam::ImportUI*, Digikam::ImportImageModel*, Digikam::ImportFilterModel*, QWidget*) + 53
    frame #30: 0x0000000110017ec6 digikam`Digikam::ImportUI::setupUserArea() + 502
    frame #31: 0x00000001100234ea digikam`Digikam::ImportUI::ImportUI(QWidget*, QString const&, QString const&, QString const&, QString const&, int) + 874
    frame #32: 0x000000010fce2e38 digikam`Digikam::DigikamApp::slotOpenManualCamera(QAction*) + 552
    frame #33: 0x000000010fce0220 digikam`Digikam::DigikamApp::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 752
    frame #34: 0x0000000114fbc06b QtCore`QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2363
    frame #35: 0x0000000113f4888b QtGui`QActionGroup::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 619
    frame #36: 0x0000000114fbc06b QtCore`QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2363
    frame #37: 0x0000000113f464a9 QtGui`QAction::activate(QAction::ActionEvent) + 233
    frame #38: 0x0000000113ef8631 QtGui`-[QCocoaMenuLoader qtDispatcherToQAction:] + 65
    frame #39: 0x00007fff8df2ccd7 libsystem_trace.dylib`_os_activity_initiate + 75
    frame #40: 0x00007fff8d40bfb1 AppKit`-[NSApplication sendAction:to:from:] + 452
    frame #41: 0x00007fff8d40bd4e AppKit`-[NSMenuItem _corePerformAction] + 382
    frame #42: 0x00007fff8d40ba7c AppKit`-[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 114
    frame #43: 0x00007fff8df2ccd7 libsystem_trace.dylib`_os_activity_initiate + 75
    frame #44: 0x00007fff8d4d2c10 AppKit`-[NSMenu performActionForItemAtIndex:] + 131
    frame #45: 0x00007fff8d4d2b76 AppKit`-[NSMenu _internalPerformActionForItemAtIndex:] + 35
    frame #46: 0x00007fff8d4d29c2 AppKit`-[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 107
    frame #47: 0x00007fff8d3f3e6b AppKit`NSSLMMenuEventHandler + 724
    frame #48: 0x00007fff91ec8b6c HIToolbox`DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1260
    frame #49: 0x00007fff91ec7fae HIToolbox`SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 386
    frame #50: 0x00007fff91eddcb6 HIToolbox`SendEventToEventTarget + 40
    frame #51: 0x00007fff91f17f45 HIToolbox`SendHICommandEvent(unsigned int, HICommand const*, unsigned int, unsigned int, unsigned char, void const*, OpaqueEventTargetRef*, OpaqueEventTargetRef*, OpaqueEventRef**) + 428
    frame #52: 0x00007fff91f55b8d HIToolbox`SendMenuCommandWithContextAndModifiers + 59
    frame #53: 0x00007fff91f55b30 HIToolbox`SendMenuItemSelectedEvent + 188
    frame #54: 0x00007fff91f55a09 HIToolbox`FinishMenuSelection(SelectionData*, MenuResult*, MenuResult*) + 96
    frame #55: 0x00007fff91f56481 HIToolbox`MenuSelectCore(MenuData*, Point, double, unsigned int, OpaqueMenuRef**, unsigned short*) + 702
    frame #56: 0x00007fff91f560fe HIToolbox`_HandleMenuSelection2 + 446
    frame #57: 0x00007fff8d311de0 AppKit`_NSHandleCarbonMenuEvent + 277
    frame #58: 0x00007fff8d248d0d AppKit`_DPSNextEvent + 1828
    frame #59: 0x00007fff8d247f68 AppKit`-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 346
    frame #60: 0x00007fff8d23dbf3 AppKit`-[NSApplication run] + 594
    frame #61: 0x0000000113f01f6b QtGui`QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2027
    frame #62: 0x0000000114fa04ff QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 495
    frame #63: 0x0000000114fa3737 QtCore`QCoreApplication::exec() + 199
    frame #64: 0x000000010feecb87 digikam`main + 9559
    frame #65: 0x00007fff94bd95c9 libdyld.dylib`start + 1
    frame #66: 0x00007fff94bd95c9 libdyld.dylib`start + 1

  thread #2: tid = 0xfa39, 0x00007fff8e72b232 libsystem_kernel.dylib`kevent64 + 10, queue = 'com.apple.libdispatch-manager'
    frame #0: 0x00007fff8e72b232 libsystem_kernel.dylib`kevent64 + 10
    frame #1: 0x00007fff99adbd91 libdispatch.dylib`_dispatch_mgr_invoke + 247
    frame #2: 0x00007fff99adba6a libdispatch.dylib`_dispatch_mgr_thread + 52

  thread #3: tid = 0xfa59, 0x00007fff8e72a3fa libsystem_kernel.dylib`__select + 10, name = 'com.apple.CFSocket.private'
    frame #0: 0x00007fff8e72a3fa libsystem_kernel.dylib`__select + 10
    frame #1: 0x00007fff90bceb7a CoreFoundation`__CFSocketManager + 730
    frame #2: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #3: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #4: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #4: tid = 0xfa5b, 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'Digikam::ScanController'
    frame #0: 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff94dbce0c libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000114e93e9b QtCore`QWaitConditionPrivate::wait(unsigned long) + 203
    frame #3: 0x0000000114e93cff QtCore`QWaitCondition::wait(QMutex*, unsigned long) + 111
    frame #4: 0x000000010fd76cb1 digikam`Digikam::ScanController::run() + 641
    frame #5: 0x0000000114e92802 QtCore`QThreadPrivate::start(void*) + 386
    frame #6: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #5: tid = 0xfa60, 0x00007fff8e7254de libsystem_kernel.dylib`mach_msg_trap + 10
    frame #0: 0x00007fff8e7254de libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007fff8e72464f libsystem_kernel.dylib`mach_msg + 55
    frame #2: 0x00007fff90b82eb4 CoreFoundation`__CFRunLoopServiceMachPort + 212
    frame #3: 0x00007fff90b8237b CoreFoundation`__CFRunLoopRun + 1371
    frame #4: 0x00007fff90b81bd8 CoreFoundation`CFRunLoopRunSpecific + 296
    frame #5: 0x00007fff8d31066b AppKit`_NSEventThread + 137
    frame #6: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #6: tid = 0xfa77, 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'QThread'
    frame #0: 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff94dbce0c libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000114e93e9b QtCore`QWaitConditionPrivate::wait(unsigned long) + 203
    frame #3: 0x0000000114e93cff QtCore`QWaitCondition::wait(QMutex*, unsigned long) + 111
    frame #4: 0x0000000111213160 libdigikamcore.4.10.0.dylib`Digikam::ParkingThread::run() + 176
    frame #5: 0x0000000114e92802 QtCore`QThreadPrivate::start(void*) + 386
    frame #6: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #7: tid = 0xfa8a, 0x00007fff8e72a3fa libsystem_kernel.dylib`__select + 10, name = 'QProcessManager'
    frame #0: 0x00007fff8e72a3fa libsystem_kernel.dylib`__select + 10
    frame #1: 0x0000000114f76def QtCore`QProcessManager::run() + 143
    frame #2: 0x0000000114e92802 QtCore`QThreadPrivate::start(void*) + 386
    frame #3: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #4: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #5: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #8: tid = 0xfabc, 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'Thread (pooled)'
    frame #0: 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff94dbce0c libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000114e93e89 QtCore`QWaitConditionPrivate::wait(unsigned long) + 185
    frame #3: 0x0000000114e93cff QtCore`QWaitCondition::wait(QMutex*, unsigned long) + 111
    frame #4: 0x0000000114e84fd1 QtCore`QThreadPoolThread::run() + 561
    frame #5: 0x0000000114e92802 QtCore`QThreadPrivate::start(void*) + 386
    frame #6: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #9: tid = 0xfae4, 0x00007fff8e72b21a libsystem_kernel.dylib`kevent + 10, name = 'QKqueueFileSystemWatcherEngine'
    frame #0: 0x00007fff8e72b21a libsystem_kernel.dylib`kevent + 10
    frame #1: 0x0000000114f8565a QtCore`QKqueueFileSystemWatcherEngine::run() + 106
    frame #2: 0x0000000114e92802 QtCore`QThreadPrivate::start(void*) + 386
    frame #3: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #4: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #5: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #10: tid = 0xfb95, 0x00007fff8e7254de libsystem_kernel.dylib`mach_msg_trap + 10, name = 'org.libusb.device-hotplug'
    frame #0: 0x00007fff8e7254de libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007fff8e72464f libsystem_kernel.dylib`mach_msg + 55
    frame #2: 0x00007fff90b82eb4 CoreFoundation`__CFRunLoopServiceMachPort + 212
    frame #3: 0x00007fff90b8237b CoreFoundation`__CFRunLoopRun + 1371
    frame #4: 0x00007fff90b81bd8 CoreFoundation`CFRunLoopRunSpecific + 296
    frame #5: 0x00007fff90c39671 CoreFoundation`CFRunLoopRun + 97
    frame #6: 0x000000011552c4fb libusb-1.0.0.dylib`darwin_event_thread_main + 591
    frame #7: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #8: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #9: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #11: tid = 0xfbee, 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'Thread (pooled)'
    frame #0: 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff94dbce0c libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000114e93e89 QtCore`QWaitConditionPrivate::wait(unsigned long) + 185
    frame #3: 0x0000000114e93cff QtCore`QWaitCondition::wait(QMutex*, unsigned long) + 111
    frame #4: 0x0000000114e84fd1 QtCore`QThreadPoolThread::run() + 561
    frame #5: 0x0000000114e92802 QtCore`QThreadPrivate::start(void*) + 386
    frame #6: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #12: tid = 0xfc0c, 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'Digikam::CameraController'
    frame #0: 0x00007fff8e72a136 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff94dbce0c libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000114e93e9b QtCore`QWaitConditionPrivate::wait(unsigned long) + 203
    frame #3: 0x0000000114e93cff QtCore`QWaitCondition::wait(QMutex*, unsigned long) + 111
    frame #4: 0x0000000110035ff0 digikam`Digikam::CameraController::run() + 240
    frame #5: 0x0000000114e92802 QtCore`QThreadPrivate::start(void*) + 386
    frame #6: 0x00007fff94dbc268 libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff94dbc1e5 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff94dba41d libsystem_pthread.dylib`thread_start + 13

  thread #13: tid = 0xfd18, 0x00007fff8e72a94a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #0: 0x00007fff8e72a94a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007fff94dbc6c3 libsystem_pthread.dylib`_pthread_wqthread + 869
    frame #2: 0x00007fff94dba40d libsystem_pthread.dylib`start_wqthread + 13
(lldb) detach
Process 11152 detached
(lldb) (lldb) quit
Comment 1 caulier.gilles 2015-06-17 10:16:51 UTC
Which OSX did you use ?

Do you have video files on your camera ?

Gilles Caulier
Comment 2 Tom Vincent 2015-06-17 10:34:10 UTC
OS X Yosemite 10.10.3. Yes, there are videos on the device.
Comment 3 caulier.gilles 2015-06-17 11:27:16 UTC
Ok.

To test, can you import files from camera without to have video files (typically images only as JPEG and RAW).

For video files, there are bugs in Exiv2 0.24 library which crash digiKam. We have a lots of reports about.

Exiv2 0.25 is not yet released. This version will fix these problems.

Gilles Caulier
Comment 4 caulier.gilles 2015-06-19 17:08:28 UTC
Tom, 

I build digiKam 4.11.0 PKG installer for Yosemite, including new Exiv2 0.25 :

http://download.kde.org/stable/digikam/digikam-4.11.0-Yosemite.pkg.mirrorlist

Please test and give us feedback.

We have also a patch for another problem relevant of ImportTool view init, but it will be included to next 4.12.0 release.

Gilles Caulier
Comment 5 Maik Qualmann 2015-06-19 21:10:57 UTC
Git commit ad8538938371ec4152450c661b1857f8441e3af8 by Maik Qualmann.
Committed on 19/06/2015 at 21:01.
Pushed by mqualmann into branch 'master'.

fixes the model initialisation from the icon view and thumb bar of the import window
Related: bug 339008
FIXED-IN: 4.12.0

M  +3    -1    NEWS
M  +1    -7    utilities/importui/main/importui.cpp
M  +7    -3    utilities/importui/views/importiconview.cpp
M  +0    -2    utilities/importui/views/importiconview.h
M  +11   -20   utilities/importui/views/importstackedview.cpp
M  +0    -1    utilities/importui/views/importstackedview.h
M  +3    -12   utilities/importui/views/importview.cpp
M  +1    -1    utilities/importui/views/importview.h

http://commits.kde.org/digikam/ad8538938371ec4152450c661b1857f8441e3af8
Comment 6 caulier.gilles 2015-06-20 15:53:48 UTC
Git commit 0d4dca4094dab6930c66dc22adc6b2d31bcbe038 by Gilles Caulier.
Committed on 20/06/2015 at 15:52.
Pushed by cgilles into branch 'frameworks'.

backport commit #ad8538938371ec4152450c661b1857f8441e3af8 from git/master to frameworks branch
Related: bug 339008

M  +1    -7    utilities/importui/main/importui.cpp
M  +7    -3    utilities/importui/views/importiconview.cpp
M  +0    -2    utilities/importui/views/importiconview.h
M  +11   -18   utilities/importui/views/importstackedview.cpp
M  +0    -1    utilities/importui/views/importstackedview.h
M  +8    -14   utilities/importui/views/importview.cpp
M  +3    -2    utilities/importui/views/importview.h

http://commits.kde.org/digikam/0d4dca4094dab6930c66dc22adc6b2d31bcbe038