Summary: | digikam crashes when dowloading from Kodak CX7300 camera | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Sergio <sergio_tridente> |
Component: | Import-Gphoto2 | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | 0.9.1 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Sergio
2007-04-30 21:51:44 UTC
This message is important: terminate called after throwing an instance of 'Exiv2::Error' what(): /store_00010001/DCIM/100K7300/100_1368.JPG: Failed to open the data source: No such file or directory (2) This can be a problem with gphoto2 witch do not give acess right to read this file with digiKam. There is no reason to have a crash like this. I have patched in svn the libkexiv2 implementation to test if the current file can be loaded by Exiv2 to prevent a crash in digiKam. If your camera support Usb Mass Storage protocol, use the digiKam UMS interface instead the gphoto2 stuff. Look in camera config dialog for details. Gilles Caulier the /store_00010001/ is a virtual path on the camera. perhaps the exiv2 handling should retrieve the data from the camera. (you can get EXIF data seperately via gphoto) SVN commit 660276 by cgilles: libkexiv2 from trunk : test if file is readable before to load it in Exiv2. CCBUGS: 144895 M +12 -8 kexiv2.cpp M +2 -2 kexiv2.h --- trunk/extragear/libs/libkexiv2/kexiv2.cpp #660275:660276 @@ -1,6 +1,6 @@ /* ============================================================ - * Authors: Gilles Caulier <caulier dot gilles at gmail dot com> - * Marcel Wiesweg <marcel dot wiesweg at gmx dot de> + * Authors: Gilles Caulier + * Marcel Wiesweg * Date : 2006-09-15 * Description : Exiv2 library interface for KDE * @@ -344,13 +344,15 @@ bool KExiv2::load(const QString& filePath) { + QFileInfo finfo(filePath); + if (filePath.isEmpty() || !finfo.isReadable()) + { + qDebug("File '%s' is not readable.", finfo.fileName().ascii()); + return false; + } + try - { - d->filePath = filePath; - - if (filePath.isEmpty()) - return false; - + { Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((const char*) (QFile::encodeName(filePath))); image->readMetadata(); @@ -367,6 +369,8 @@ d->iptcMetadata = image->iptcData(); + d->filePath = filePath; + return true; } catch( Exiv2::Error &e ) --- trunk/extragear/libs/libkexiv2/kexiv2.h #660275:660276 @@ -1,6 +1,6 @@ /* ============================================================ - * Authors: Gilles Caulier <caulier dot gilles at gmail dot com> - * Marcel Wiesweg <marcel dot wiesweg at gmx dot de> + * Authors: Gilles Caulier + * Marcel Wiesweg * Date : 2006-09-15 * Description : Exiv2 library interface for KDE * To Marcus, #2. I suspect than Sergio use the gphoto-hotplug feature witch autommount the camera in UMS mode somewhere in the file system. Something is wrong somewhere when the path to the camera is pass to digiKam. There is only the relative camera path given to digiKam, not the full path. This is why the file cannot be loaded in Exiv2. In digiKam, using UMS mode, we use Exiv2 instead gphoto2-exif interface because its more powerfull (exif, makernote, raw files support, GPS, etc.) Gilles Gilles, Unfortunately that is not the case. The camera does not seem to be mounted anywhere in the filesystem. As a matter of fact, I doubt it supports UMS at all. At least, never did for me. OK, maybe I am wrong here. The way I can acces my pictures now that digikam is not able any more, is thru konqueror using the camera:/ protocol (no idea what that does in reality :-). For example, my camera is branched now and when I type "camera:/" in konqueror the following path is available: "camera://Kodak CX7300@[usb:1,5]/store_00010001/DCIM/100K7300" (my photos are in this directory). The only thing that seems to be appering in /dev dir is "/dev/usb/1/5" (which in fact is my camera attached to the usb port). I noted that that corresponds quite well with "[usb:1,5]" in konqueror's path. There is nothing related ti the camera in /mnt or in /media. As I pointed out in the bug report, the strange thing is that it worked fine before (same camera, same version of SuSE, ok... with some packages updated). The day I installed SuSE 10.0 digikam was one of the things that worked straightforward. I read in one of your other posts that you were talking about hotplug. I know that my system is using udev for hotplugging and that the usb devices are created with owner root and group usb. Permisson are set rw for both owner and group. And my every-day-usage user is part of the usb group. As a matter of fact I doubt it is a permission problem because I tried to run digikam as root (thru kdesu) and I get the same error (same stack trace and same message in the console). Thanks for taking care of my problem. If you need more info, please let me know. Kind regards. Sergio Hi Sergio, not sure if the following will be of help in finding the origin of the problem, but let's see: 1.) what is the output of `dmesg` after plugging in the camera (do dmesg before and after to see the difference) 2.) What do you get for gphoto2 --auto-detect -P -n --debug --debug-logfile gphoto2.lst 3.) What do you get for gphoto2 --auto-detect -L -n --debug --debug-logfile gphoto22.lst 4.) Maybe in addition: gphoto2 --auto-detect -l -n Could you attach the files gphoto2.lst and gphoto22.lst here? Thanks in advance, Arnd Arnd, This file is relevant of other Kodak problem reported to #147071 ? Gilles Hi Sergio, do you have any update on this issue? Without further input we are not able to solve the problem ... Many thanks, Arnd OK, without further input nothing can be done here. In view of the presumably related one http://bugs.kde.org/show_bug.cgi?id=147071 (which is solved now) I am marking this bug as fixed. Don't hesitate to re-open if you have new information. Thanks a lot for your understanding, Arnd |