Summary: | digikam crashes when resizing the crop area | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Rudolf Leitgeb <Rudolf.Leitgeb> |
Component: | Plugin-Editor-Crop | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | caulier.gilles, info |
Priority: | NOR | ||
Version: | 2.1.1 | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 7.5.0 |
Description
Rudolf Leitgeb
2011-11-05 19:16:26 UTC
*** Bug 274555 has been marked as a duplicate of this bug. *** *** This bug has been marked as a duplicate of bug 274555 *** This bug is being reported quite often. Unfortunately none of the developers can reproduce, so we need someone who can reproduce this bug and runs digikam under valgrind while crashing. This may give us more information. I am more than willing to experiment with this. To my knowledge valgrind allows quite fine grained control over what gets reported and what doesn't. Please let me/us know which options I should use with valgrind. Look here : https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/entry/HACKING#L282 Gilles Caulier Since the bug reported by me seems to be a NULL pointer dereference, valgrind may not be the tool of choice. Looking at the offending code in core/libs/dimg/filters/levels/histogramwidget.cpp you see some risky logic before finally a pointer is dereferenced. I replaced the original code: currentHistogram()->calculateInThread(); with the snippet: ImageHistogram* Histogram = currentHistogram(); if (Histogram == NULL) { qDebug("Triggered histogram crash!"); qDebug("Dumping class state:"); // Current selection information. HistogramPainter* histogramPainter; qDebug("sixteenBits: %1d", d->sixteenBits); qDebug("guideVisible: %1d", d->guideVisible); qDebug("statisticsVisible: %1d", d->statisticsVisible); qDebug("inSelected: %1d", d->inSelected); qDebug("selectMode: %1d", d->selectMode); qDebug("showProgress: %1d", d->showProgress); qDebug("renderingType: %d", d->renderingType); qDebug("range: %d", d->range); qDebug("state: %d", (int)(d->state)); qDebug("channelType: %d", (int)(d->channelType)); qDebug("scaleType: %d", (int)(d->scaleType)); qDebug("imageHistogram: %p", d->imageHistogram); qDebug("selectionHistogram: %p", d->selectionHistogram); qDebug("xmin: %f", d->xmin); qDebug("xminOrg: %f", d->xminOrg); qDebug("xmax: %f", d->xmax); qDebug("animationState: %d", d->animationState); qDebug("animation: %p", d->animation); qDebug("histogramPainter: %p", d->histogramPainter); qDebug("arguments:"); qDebug("i_idata: %p, i_w: %ud, i_h: %ud", i_data, i_w, i_h); qDebug("i_sixteenBits: %1d", i_sixteenBits); qDebug("s_idata: %p, s_w: %ud, s_h: %ud", s_data, s_w, s_h); qDebug("showProgress: %1d", showProgress); } else { currentHistogram()->calculateInThread(); } If the bug triggers, I'll (should) get a full dump of the status of the object. In a short editing session it has not triggered yet but I expect that to happen sooner or later. Please let me know in advance if you would like to see other variables or states in this dump, too. Cheers, Rudi Rudolf, Thanks for your investigations. Note : this file has been closed as duplicated of #274555. Please post your comment on this report... Gilles Caulier Fixed with #274555 |