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) = ?
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