Summary: | Digikam crash, apparently in xcb | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Kenneth Ingham <kdebugs> |
Component: | Metadata-Engine | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | caulier.gilles, cfeck |
Priority: | NOR | Keywords: | drkonqi |
Version: | 4.5.0 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 5.0.0 | |
Sentry Crash Report: |
Description
Kenneth Ingham
2014-12-18 20:30:44 UTC
This is not an xcb problem. The libkexiv2 library wants to show an error using KExiv2Iface::KExiv2::Private::printExiv2ExceptionError, which (for whatever reason) tries to route through KMessageBox. GUI classes, however, cannot be used from outside the main thread. Can you please use "kdebugdialog --fullmode", and check if any of them say "Output to: Message Box" ? BTW, the exiv2 exception is this text: Cannot load metadata from file (Error # 11 : /home/ingham/Photos/Alicia-2014-12-10/CellPhone/20141210_112417-levels-100.xcf If possible, please attach that file so that the meta data loading can be fixed. If this file is private, you can also mail it to Digikam developers directly. Christoph, The trace sound like corrupted. There is no GUI call from separated thread running Exiv2/libkexiv2. I suspect a duplicate report about missing C++ exception handling included in libkexiv2 recently. Here XCF image is not supported by Exiv2 which send a C++ exception. Full C++ exception wrapper have been implemented through this commit : https://projects.kde.org/projects/kde/kdegraphics/libs/libkexiv2/repository/revisions/8a8dc535d504b70776677b933ac761bba0f7a4ae So for me it's a duplicate of bug #331679 Gilles Caulier These have Error and Fatal Error to Message box: 50003 digikam (core) 50004 digikam (kio-slave) 50005 digikam (showfoto) 50006 digikam (editor plugins) 50007 digikam (database server) digikam Okey, this confirms my suspicion. Unfortunately kDebug() does not make sure KMessageBox is called in the main thread. To avoid this crash, set any other output method for digikam, because it is highly multi-threaded. I am closing this as UNMAINTAINED, because we will not fix kDebug(). Applications should be ported to qCDebug, which is hopefully more thread-safe. Regarding the error thrown by libexiv2, Gilles decides if this should be reported upstream to libexiv2 developers, or if this is a digikam issue. I am not sure if .xcf files are supposed to support metadata at all. Christoph,
>Unfortunately kDebug() does not make sure KMessageBox is called in the main thread.
==> What ? kDebug want to print message through KMessageBox ?
No. it's just print text on the console. kDebug is thread safe. We use it since a very long time everywhere in digiKam, especially in multi-threaded section. In the pass, we have found several dysfunction about non re-entrancy fixed by David Faure. But it very old (2005/2006).
For the XCF support, it's a Exiv2 UPSTREAM wish to report in Exiv2 bugzilla. XCF has metadata...
Gilles Caulier
Anyway, i already ported all kDebug everywhere in digiKam/libkexiv2 to qCDebug with framework.
> No. it's just print text on the console. Please read comment #2 and Kenneth's answer in comment #5. ok. right. now i understand... I close this file as fixed with Qt5 port, as kDebug is fully port to qCDebug now... For Exiv2 exception, this is already reported in Exiv2 bugzilla, and fixed with next 0.25 release Gilles Caulier The only problem is that digikam is still completely unusable. I got the latest libkexiv2 and libexiv2 sources, built them and verified via ldd that digikam was using them. It still crashes using a directory containing only one .xcf file. If I get the latest digikam sources and build, will it work? yes it is. Full C++ exception handling have been implemented in libkexiv2 since few months Gilles Caulier *** Bug 343257 has been marked as a duplicate of this bug. *** |