Summary: | Digikam crash when looking through photos | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Andrew Coles <andrew.i.coles> |
Component: | Preview-Image | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | andrew.i.coles, caulier.gilles |
Priority: | NOR | ||
Version: | 2.0.0 | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 2.0.0 | |
Attachments: | New crash information added by DrKonqi |
Description
Andrew Coles
2011-01-16 15:17:04 UTC
Created attachment 56098 [details]
New crash information added by DrKonqi
digikam (2.0.0-beta2 (rev.: 1214825M)) on KDE Platform 4.5.95 (4.6 RC2) using Qt 4.7.0
- What I was doing when the application crashed:
This time, looking through a given album, rather than a given Tagged set of photos - crashed when clicking the arrow to show the next image. Adding the backtrace in case it provides additional information beyond the last one.
-- Backtrace (Reduced):
#7 0xb531af7c in QGraphicsSceneFindItemBspTreeVisitor::visit(QList<QGraphicsItem*>*) () from /usr/lib/libQtGui.so.4
#8 0xb5319387 in QGraphicsSceneBspTree::climbTree (this=0x5, visitor=0x9dbd978, rect=..., index=19) at graphicsview/qgraphicsscene_bsp.cpp:247
#9 0xb53193c0 in QGraphicsSceneBspTree::climbTree (this=0x9ddc398, visitor=0x9dbd978, rect=..., index=9) at graphicsview/qgraphicsscene_bsp.cpp:252
#10 0xb5319408 in QGraphicsSceneBspTree::climbTree (this=0x9ddc398, visitor=0x9dbd978, rect=..., index=1) at graphicsview/qgraphicsscene_bsp.cpp:261
#11 0xb5319408 in QGraphicsSceneBspTree::climbTree (this=0x9ddc398, visitor=0x9dbd978, rect=..., index=0) at graphicsview/qgraphicsscene_bsp.cpp:261
I cannot see digiKam code in this trace. Try to run digiKam directly into GDB and try again. Gilles Caulier Okay I've found how to reproduce it: 1) Run face recognition on an album 2) Go through the photos in the album one by one, with 'Show Face Tags' enabled 3) When you come across an 'unknown' face rectangle, move it to someone else (or if it's on a tree, move it to an actual face), resize it, tag it 4) Hit next About one time in three it crashes with the backtrace above. Valgrind output is at the bottom of this comment. As you say, there's no obvious digikam code causing the problem, so I suppose it might be a Qt bug? ==28857== Thread 1: ==28857== Invalid read of size 4 ==28857== at 0x6AACF79: QGraphicsSceneFindItemBspTreeVisitor::visit(QList<QGraphicsItem*>*) (qscopedpointer.h:113) ==28857== by 0x6AAB386: QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (qgraphicsscene_bsp.cpp:247) ==28857== by 0x6AAB3BF: QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (qgraphicsscene_bsp.cpp:252) ==28857== by 0x6AAB407: QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (qgraphicsscene_bsp.cpp:261) ==28857== by 0x6AAB825: QGraphicsSceneBspTree::items(QRectF const&, bool) const (qgraphicsscene_bsp.cpp:154) ==28857== by 0x6AAF130: QGraphicsSceneBspTreeIndexPrivate::estimateItems(QRectF const&, Qt::SortOrder, bool) (qgraphicsscenebsptreeindex.cpp:387) ==28857== by 0x6AAF381: QGraphicsSceneBspTreeIndex::estimateTopLevelItems(QRectF const&, Qt::SortOrder) const (qgraphicsscenebsptreeindex.cpp:540) ==28857== by 0x6A96C76: QGraphicsScenePrivate::drawItems(QPainter*, QTransform const*, QRegion*, QWidget*) (qgraphicsscene.cpp:4697) ==28857== by 0x6AC2BB8: QGraphicsView::paintEvent(QPaintEvent*) (qgraphicsview.cpp:3467) ==28857== by 0x641BCC5: QWidget::event(QEvent*) (qwidget.cpp:8333) ==28857== by 0x683D762: QFrame::event(QEvent*) (qframe.cpp:557) ==28857== by 0x68DAA81: QAbstractScrollArea::viewportEvent(QEvent*) (qabstractscrollarea.cpp:1043) ==28857== Address 0x17ee2114 is not stack'd, malloc'd or (recently) free'd ==28857== ==28857== Invalid read of size 4 ==28857== at 0x6AACF7C: QGraphicsSceneFindItemBspTreeVisitor::visit(QList<QGraphicsItem*>*) (qgraphicsscene_bsp.cpp:79) ==28857== by 0x6AAB386: QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (qgraphicsscene_bsp.cpp:247) ==28857== by 0x6AAB3BF: QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (qgraphicsscene_bsp.cpp:252) ==28857== by 0x6AAB407: QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, QRectF const&, int) const (qgraphicsscene_bsp.cpp:261) ==28857== by 0x6AAB825: QGraphicsSceneBspTree::items(QRectF const&, bool) const (qgraphicsscene_bsp.cpp:154) ==28857== by 0x6AAF130: QGraphicsSceneBspTreeIndexPrivate::estimateItems(QRectF const&, Qt::SortOrder, bool) (qgraphicsscenebsptreeindex.cpp:387) ==28857== by 0x6AAF381: QGraphicsSceneBspTreeIndex::estimateTopLevelItems(QRectF const&, Qt::SortOrder) const (qgraphicsscenebsptreeindex.cpp:540) ==28857== by 0x6A96C76: QGraphicsScenePrivate::drawItems(QPainter*, QTransform const*, QRegion*, QWidget*) (qgraphicsscene.cpp:4697) ==28857== by 0x6AC2BB8: QGraphicsView::paintEvent(QPaintEvent*) (qgraphicsview.cpp:3467) ==28857== by 0x641BCC5: QWidget::event(QEvent*) (qwidget.cpp:8333) ==28857== by 0x683D762: QFrame::event(QEvent*) (qframe.cpp:557) ==28857== by 0x68DAA81: QAbstractScrollArea::viewportEvent(QEvent*) (qabstractscrollarea.cpp:1043) ==28857== Address 0x70 is not stack'd, malloc'd or (recently) free'd I dont get this crash atm. We can disable the BSP indexing. If this patch leads to a different crash or valgrind error, it's our fault, if all is well, chances are there's a Qt problem or a problem with the way we use Qt. Thanks a lot for your help! Index: libs/widgets/graphicsview/graphicsdimgview.cpp =================================================================== --- libs/widgets/graphicsview/graphicsdimgview.cpp (Revision 1215076) +++ libs/widgets/graphicsview/graphicsdimgview.cpp (Arbeitskopie) @@ -77,6 +77,7 @@ : QGraphicsView(parent), d(new GraphicsDImgViewPriv) { d->scene = new QGraphicsScene(this); + d->scene->setItemIndexMethod(QGraphicsScene::NoIndex); setScene(d->scene); d->layout = new SinglePhotoPreviewLayout(this); That patch fixes it - no crash, no valgrind warnings. Discovered this one: http://bugreports.qt.nokia.com/browse/QTBUG-5090 but over a year old, supposedly fixed, but no clear solution visible. Maybe it's really a Qt bug? I assume we can disable indexing safely, with less than 100 items (often only one) present, though it's a workaround and not a fix. SVN commit 1215197 by mwiesweg: Switch off BSP indexing in the preview graphics view. Workaround, presumably a Qt problem. BUG: 263321 M +1 -0 graphicsdimgview.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1215197 |