| Summary: | crash during RAW import | ||
|---|---|---|---|
| Product: | [Applications] digikam | Reporter: | Gerhard Kulzer <gerhard> |
| Component: | Plugin-DImg-RAW | Assignee: | Digikam Developers <digikam-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | caulier.gilles |
| Priority: | NOR | ||
| Version First Reported In: | 0.10.0 | ||
| Target Milestone: | --- | ||
| Platform: | Ubuntu | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | 0.10.0 | |
| Sentry Crash Report: | |||
This is the problem : ASSERT failure in QVector<T>::operator[]: "index out of range", file /usr/include/qt4/QtCore/qvector.h, line 331 I have th e crash on my computer (KDE4/QT4), but a similar error in KDE3/QT3 without a crash (no Qt assertion) The problem is relevant of my code used with CurveWidget/ImageCurves/RawDecoding to host post processing curves settings from Raw import tool. It use a QPolygon (Qt4) and QPointArray (QT3) as container values. Something is wrong in this code, but i cannot find where exactly... Andi, Marcel, If you have an idea... Gilles SVN commit 851624 by cgilles:
fix crash duing a wrong container size
BUG: 169704
M +2 -2 imagecurves.cpp
--- trunk/extragear/graphics/digikam/libs/curves/imagecurves.cpp #851623:851624
@@ -543,7 +543,7 @@
QPolygon ImageCurves::getCurvePoints(int channel)
{
- QPolygon array(17);
+ QPolygon array(18);
if ( d->curves &&
channel>=0 && channel<5)
@@ -613,7 +613,7 @@
{
if ( d->curves &&
channel>=0 && channel<5 &&
- vals.size() == 17 )
+ vals.size() == 18 )
{
d->dirty = true;
for (int j = 0 ; j <= 17 ; j++)
SVN commit 851625 by cgilles:
backport commit #851624 from KDE4
M +2 -2 imagecurves.cpp
--- branches/extragear/kde3/graphics/digikam/libs/curves/imagecurves.cpp #851624:851625
@@ -543,7 +543,7 @@
QPointArray ImageCurves::getCurvePoints(int channel)
{
- QPointArray array(17);
+ QPointArray array(18);
if ( d->curves &&
channel>=0 && channel<5)
@@ -613,7 +613,7 @@
{
if ( d->curves &&
channel>=0 && channel<5 &&
- vals.size() == 17 )
+ vals.size() == 18 )
{
d->dirty = true;
for (int j = 0 ; j <= 17 ; j++)
Oh the keywords are working again? Great!! Andi, No. I do it manually using web iface. Gilles |
Version: (using KDE 4.1.0) Compiler: GCC 4.3 OS: Linux Installed from: Ubuntu Packages I am running revision revision 851613, but the problem exists since rawimport was introduced to 0.10 version of digikam (2 days ago). My DB and images are located on a XLS file system. digiKam would crash any time I open a raw file (tried NEF, CRW and CR2) with the rawimport module. The old RAW decoding works without problem. Then I deleted my digikamrc. And started freshly. digiKam will treat 1 RAW image without problems, I can save the file and all, apply profiles, etc. But with the second image it will crash. After new start it crashes at first RAW image. When I delete digikamrc again, I'm good for 1 image before it crashes. -> gdb and strace outputs: The gdb trace looks always similar like tis one: ... Succesfully parsed file! DGML2 Name : "Atlas" Style reset requested. THEME CHANGED: *** "earth/srtm/srtm.dgml" QFSFileEngine::open: No file name specified QFSFileEngine::open: No file name specified File '' is not readable. [New Thread 0xa6bffb90 (LWP 813)] Error: Directory Unknown with 34346 entries considered invalid; not read. DateTime => Exif.Photo.DateTimeOriginal => QDateTime("Sun Oct 9 13:04:22 2005") ASSERT failure in QVector<T>::operator[]: "index out of range", file /usr/include/qt4/QtCore/qvector.h, line 331 [Thread 0xac7ffb90 (LWP 789) exited] [Thread 0xaa3ffb90 (LWP 793) exited] [Thread 0xaadfeb90 (LWP 792) exited] [Thread 0xada92b90 (LWP 786) exited] [Thread 0xad291b90 (LWP 787) exited] [Thread 0xae69eb90 (LWP 785) exited] [Thread 0xaee9fb90 (LWP 784) exited] [Thread 0xaf715b90 (LWP 782) exited] [Thread 0xb28e2b90 (LWP 780) exited] [Thread 0xb20e1b90 (LWP 779) exited] [Thread 0xb34aab90 (LWP 776) exited] [Thread 0xab5ffb90 (LWP 790) exited] zone still contained 64 blocks Program exited with code 01. A strace produces this output: ... access("/usr/lib/kde4/share/locale/en_US/LC_SCRIPTS/digikam/digikam.js", R_OK) = -1 ENOENT (No such file or directory) writev(8, [{"l\1\1\1S\0\0\0G\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144}, {"N\0\0\0type=\'signal\',interface=\'org"..., 83}], 2) = 227 futex(0x85ea91c, 0x84 /* FUTEX_??? */, 1) = 1 futex(0x85ea900, 0x81 /* FUTEX_??? */, 1) = 1 futex(0x85ea8d0, 0x85 /* FUTEX_??? */, 1) = 1 futex(0x85ea8b4, 0x81 /* FUTEX_??? */, 1) = 1 futex(0x85ea708, 0x80 /* FUTEX_??? */, 1) = -1 EAGAIN (Resource temporarily unavailable) futex(0x85ea6ec, 0x81 /* FUTEX_??? */, 1) = 0 futex(0xb54ef160, 0x80 /* FUTEX_??? */, 2) = -1 EAGAIN (Resource temporarily unavailable) futex(0xb54ef160, 0x81 /* FUTEX_??? */, 1) = 0 futex(0x859fa24, 0x84 /* FUTEX_??? */, 1) = 1 futex(0x859fa08, 0x81 /* FUTEX_??? */, 1) = 1 futex(0x859f9d8, 0x85 /* FUTEX_??? */, 1) = 1 futex(0x859f9bc, 0x81 /* FUTEX_??? */, 1) = 1 futex(0x85aa098, 0x80 /* FUTEX_??? */, 1) = -1 EAGAIN (Resource temporarily unavailable) futex(0x85aa07c, 0x81 /* FUTEX_??? */, 1) = 0 futex(0x8483964, 0x84 /* FUTEX_??? */, 1) = 1 futex(0x8483948, 0x81 /* FUTEX_??? */, 1) = 1 futex(0x8483918, 0x85 /* FUTEX_??? */, 1) = 1 futex(0x84838fc, 0x81 /* FUTEX_??? */, 1) = 1 writev(10, [{"l\1\1\1\222\0\0\0002\2\0\0\177\0\0\0\1\1o\0\25\0\0\0/o"..., 144}, {"\215\0\0\0type=\'signal\',sender=\'org.fr"..., 146}], 2) = 290 writev(10, [{"l\1\1\1\220\0\0\0003\2\0\0\177\0\0\0\1\1o\0\25\0\0\0/o"..., 144}, {"\213\0\0\0type=\'signal\',sender=\'org.fr"..., 144}], 2) = 288 inotify_rm_watch(20, 283) = 0 ... inotify_rm_watch(20, 196) = 0 writev(8, [{"l\1\1\1D\0\0\0H\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144}, {"?\0\0\0type=\'signal\',interface=\'org"..., 68}], 2) = 212 futex(0xb54f0a78, 0x81 /* FUTEX_??? */, 2147483647) = 0 munmap(0xb4564000, 4296704) = 0 munmap(0xb35e7000, 16240640) = 0 close(8) = 0 write(6, "@", 1) = 1 close(6) = 0 futex(0x83a095c, 0x80 /* FUTEX_??? */, 1) = 0 futex(0x83a0940, 0x81 /* FUTEX_??? */, 1) = 0 close(5) = 0 rt_sigaction(SIGCHLD, {SIG_DFL}, {0xb67cd6f0, [], SA_NOCLDSTOP}, 8) = 0 write(2, "zone still contained 64 blocks\n", 31) = 31 getpid() = 1292 getpid() = 1292 getpid() = 1292 getpid() = 1292 getpid() = 1292 munmap(0xaa9e5000, 8192) = 0 exit_group(1) = ?