[Digikam-devel] [Bug 149485] Advanced image resize for the digikam editor

Andi Clemens andi.clemens at gmx.net
Fri Apr 3 15:11:43 BST 2009


https://bugs.kde.org/show_bug.cgi?id=149485





--- Comment #27 from Andi Clemens <andi clemens gmx net>  2009-04-03 16:11:37 ---
Running in valgrind, the plugin is not crashing anymore, but I guess we might
have some threading problem here, maybe LQR is not reentrant?

==12257== Thread 5:
==12257== Mismatched free() / delete / delete []
==12257==    at 0x4023E3A: free (in
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==12257==    by 0x737FA15: g_free (in /usr/lib/libglib-2.0.so.0.2000.0)
==12257==    by 0xFD15C87: lqr_carver_inflate (lqr_carver.c:727)
==12257==    by 0xFD153CE: lqr_carver_build_vsmap (lqr_carver.c:536)
==12257==    by 0xFD14D60: lqr_carver_build_maps (lqr_carver.c:325)
==12257==    by 0xFD17F66: lqr_carver_resize_width (lqr_carver.c:1560)
==12257==    by 0xFD1839C: lqr_carver_resize (lqr_carver.c:1664)
==12257==    by 0xFD0EA51:
DigikamContentAwareResizingImagesPlugin::ContentAwareResizer::filterImage()
(contentawareresizer.cpp:126)
==12257==    by 0x40E01C6: Digikam::DImgThreadedFilter::startFilterDirectly()
(dimgthreadedfilter.cpp:139)
==12257==    by 0x40DEE9F: Digikam::DImgThreadedFilter::run()
(dimgthreadedfilter.cpp:152)
==12257==    by 0x50BC45D: (within /usr/lib/libQtCore.so.4.5.0)
==12257==    by 0x52CC154: start_thread (in /lib/libpthread-2.9.so)
==12257==  Address 0x14f5f028 is 0 bytes inside a block of size 751,184 alloc'd
==12257==    at 0x402434E: operator new[](unsigned int) (in
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==12257==    by 0x40A3543: Digikam::DImg::allocateData() (dimg.cpp:293)
==12257==    by 0x40A4853: Digikam::DImg::putImageData(unsigned int, unsigned
int, bool, bool, unsigned char*, bool) (dimg.cpp:219)
==12257==    by 0x40A9B2C: Digikam::DImg::DImg(unsigned int, unsigned int,
bool, bool, unsigned char*, bool) (dimg.cpp:113)
==12257==    by 0x40A9BE7: Digikam::DImg::copyImageData() (dimg.cpp:941)
==12257==    by 0x40DFDBC:
Digikam::DImgThreadedFilter::DImgThreadedFilter(Digikam::DImg*, QObject*,
QString const&) (dimgthreadedfilter.cpp:59)
==12257==    by 0xFD0EE4A:
DigikamContentAwareResizingImagesPlugin::ContentAwareResizer::ContentAwareResizer(Digikam::DImg*,
unsigned int, unsigned int, QObject*) (contentawareresizer.cpp:68)
==12257==    by 0xFD100E2:
DigikamContentAwareResizingImagesPlugin::ContentAwareResizeDlg::slotOk()
(contentawareresizedlg.cpp:393)
==12257==    by 0xFD102B0:
DigikamContentAwareResizingImagesPlugin::ContentAwareResizeDlg::slotButtonClicked(int)
(contentawareresizedlg.cpp:229)
==12257==    by 0x4AE4DC3: KDialog::qt_metacall(QMetaObject::Call, int, void**)
(in /usr/lib/libkdeui.so.5.2.0)
==12257==    by 0xFD13917:
DigikamContentAwareResizingImagesPlugin::ContentAwareResizeDlg::qt_metacall(QMetaObject::Call,
int, void**) (contentawareresizedlg.moc:72)
==12257==    by 0x51C5268: QMetaObject::activate(QObject*, int, int, void**)
(in /usr/lib/libQtCore.so.4.5.0)
==12257==
==12257== Thread 1:
==12257== Invalid free() / delete / delete[]
==12257==    at 0x402349A: operator delete[](void*) (in
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==12257==    by 0x40ADC73: Digikam::DImgPrivate::~DImgPrivate()
(dimgprivate.h:60)
==12257==    by 0x40ADDB6:
Digikam::DSharedDataPointer<Digikam::DImgPrivate>::~DSharedDataPointer()
(dshareddata.h:112)
==12257==    by 0x40A4154: Digikam::DImg::~DImg() (dimg.cpp:158)
==12257==    by 0x40DF45A: Digikam::DImgThreadedFilter::~DImgThreadedFilter()
(dimgthreadedfilter.cpp:93)
==12257==    by 0xFD0EC71:
DigikamContentAwareResizingImagesPlugin::ContentAwareResizer::~ContentAwareResizer()
(contentawareresizer.cpp:115)
==12257==    by 0xFD10404:
DigikamContentAwareResizingImagesPlugin::ContentAwareResizeDlg::~ContentAwareResizeDlg()
(contentawareresizedlg.cpp:219)
==12257==    by 0xFD0D126:
ImagePlugin_ContentAwareResizing::slotContentAwareResizing()
(imageplugin_contentawareresizing.cpp:73)
==12257==    by 0xFD0E062:
ImagePlugin_ContentAwareResizing::qt_metacall(QMetaObject::Call, int, void**)
(imageplugin_contentawareresizing.moc:69)
==12257==    by 0x51C5268: QMetaObject::activate(QObject*, int, int, void**)
(in /usr/lib/libQtCore.so.4.5.0)
==12257==    by 0x51C567F: QMetaObject::activate(QObject*, QMetaObject const*,
int, int, void**) (in /usr/lib/libQtCore.so.4.5.0)
==12257==    by 0x554C7E0: QAction::triggered(bool) (in
/usr/lib/libQtGui.so.4.5.0)
==12257==  Address 0x14f5f028 is not stack'd, malloc'd or (recently) free'd




When running in gdb you can see that DImg tries to free data that is already
deleted (by the other thread?)...

Andi

-- 
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the Digikam-devel mailing list