Version: digiKam: 0.9.1 (using KDE KDE 3.5.5) Installed from: Ubuntu Packages OS: Linux So I was in an album with the focus on one picture, doing something like this : F2, paste (Ctrl+V), enter, [the focus change to the next picture], F2, paste, enter, rince and repeat. Eventually after 8 or so pictures, digiKam crash. Attached in the next comment, the crash report.
Created attachment 20029 [details] Crash report - F2, paste, enter, rince repeat and crash
There is a possible problem in AlbumIconView::slotRename, that while the KDE gettext dialog is in the event loop, scan results can reach the Album lister and ImageInfo or AlbumIconItem objects can be changed. There were other, similar bugs. Usually solved by keeping a copy of the ImageInfo object. I will think about it.
Some kind of race condition? (In more human terms). You have the report, you can do what you want with it ;)
SVN commit 649546 by mwiesweg: Trying to fix the problem with rapid renaming, suspecting that the ImageInfo object is deleted when returning from the event loop. Does it fix the problem? CCBUG: 143200 M +6 -2 albumiconview.cpp --- trunk/extragear/graphics/digikam/digikam/albumiconview.cpp #649545:649546 @@ -794,6 +794,10 @@ if (!item) return; + // Create a copy of the item. After entering the event loop + // in the dialog, we cannot be sure about the item's status. + ImageInfo renameInfo(*item->imageInfo()); + QFileInfo fi(item->imageInfo()->name()); QString ext = QString(".") + fi.extension(false); QString name = fi.fileName(); @@ -814,7 +818,7 @@ if (!ok) return; - KURL oldURL = item->imageInfo()->kurlForKIO(); + KURL oldURL = renameInfo.kurlForKIO(); KURL newURL = oldURL; newURL.setFileName(newName + ext); @@ -828,7 +832,7 @@ // When this is completed, DIO will call AlbumLister::instance()->refresh(). // Usually the AlbumLister will ignore changes to already listed items. // So the renamed item need explicitly be invalidated. - d->imageLister->invalidateItem(item->imageInfo()); + d->imageLister->invalidateItem(&renameInfo); } void AlbumIconView::slotRenamed(KIO::Job*, const KURL &, const KURL&newURL)
Alexandre. Please give us a feedback using the last fix from Marcel from svn trunk implementation of digiKam (0.9.2-svn) Thanks in advance Gilles Caulier
Hi Gilles, I am not sure I want to use the svn version on my production machine here. I use extensively digiKam, but I am willing to wait for the official version to test it. Also, I am not really sure how should I do that. That is, downloading svn version, patching, compiling, running. Unless there is a way to compile a second digiKam without affecting the official version?
Oh and I am now with Fiesty (7.04).
Hi Alexandre, > Also, I am not really sure how should I do that. That is, downloading svn version, patching, compiling, running. > > Unless there is a way to compile a second digiKam without affecting the official version? For compiling, installing and running from svn, use http://www.digikam.org/?q=download/svn following below "Install digiKam in your Home Directory" This will install digikam svn to a separate place than your system digikam installation (don't forget to install any dependencies http://www.digikam.org/?q=download/dependencies before). I use it all the time (even in "production", and it works great, in particular with all the nice new features, definitively worth a try ;-)... Patching the code is not necessary in your case, because the changes are already in svn. (Otherwise it would be a simple patch < patchfile.patch in the corresponding directory) If you have further question during the compilation process, don't hesitate to ask on the mailing list. Best, Arnd
Alexandre, Just look here to install svn in both way than offical version : http://www.digikam.org/?q=download/svn Note : there is no specific problem to use current svn (0.9.2-svn) in production. I use it (:=))). Of course i'm developper... Gilles
Hi Gilles, I am having some errors with the scripts. I first ran the compile_exiv2 script, autoconf was missing so a "sudo apt-get install autoconf" later, I could run the compile_exiv2 script without errors. Now I run the compile_digikam script. He says... He extract revision 656563 (4 times?) ./admin/cvs.sh: 651: --version: not found *** AUTOCONF NOT FOUND!. *** KDE requires autoconf 2.53 or newer make[1]: *** [cvs] Erreur 1 make: *** [all] Erreur 2 compile_digikam.sh: 29: ./configure: not found The file [path to DIGIKAMDEST]/libs/admin/cvs.sh does not exist. And autoconf is version 2.61... I installed cvs just for fun, but no change.
> ./admin/cvs.sh: 651: --version: not found > *** AUTOCONF NOT FOUND!. > *** KDE requires autoconf 2.53 or newer > make[1]: *** [cvs] Erreur 1 > make: *** [all] Erreur 2 Maybe something is wrong already here - maybe it still thinks that autoconf is not there? Maybe a `make clean` in the libs directory does help before running compile_digikam.sh again. > compile_digikam.sh: 29: ./configure: not found This should be generated by the ` make -f Makefile.cvs` in the script, so it looks like a followup error ... > The file [path to DIGIKAMDEST]/libs/admin/cvs.sh does not exist. This file should be as libs/admin/cvs.sh below the directory from which you start the compile. HTH, Arnd
>> The file [path to DIGIKAMDEST]/libs/admin/cvs.sh does not exist. > This file should be as libs/admin/cvs.sh > below the directory from which you start the compile. Ok sorry for that, the file cvs.sh is there. My mistake. Trying your tric... $ sh compile_digikam.sh Get, compile and install required libs and kipiplugins Récupération de la référence externe vers 'libs/admin' Référence externe extraite à la révision 656622. Révision 656622 extraite. Révision 656622 extraite. Révision 656622 extraite. Révision 656622 extraite. This Makefile is only for the CVS repository This will be deleted before making the distribution ./admin/cvs.sh: 651: --version: not found *** AUTOCONF NOT FOUND!. *** KDE requires autoconf 2.53 or newer make[1]: *** [cvs] Erreur 1 [etc...] $ cd libs libs$ make clean make: *** Pas de règle pour fabriquer la cible « clean ». Arrêt. (nothing to do)
ok, last try (I am really guessing, because I don't understand the structure of all these scripts well enough;-): The procedure seems to be the following: - graphics/Makefile.cvs invokes - graphics/admin/Makefile.common cvs which essentially calls - graphics/admin/cvs.sh which has one call to - graphics/admin/detect-autoconf.pl So, what is the output of detect-autoconf.pl in your case? (I get AUTOCONF="/usr/bin/autoconf" AUTOHEADER="/usr/bin/autoheader" AUTOM4TE="/usr/bin/autom4te" AUTOMAKE="/usr/bin/automake-1.10" ACLOCAL="/usr/bin/aclocal-1.10" WHICH="type -p" export AUTOCONF AUTOHEADER AUTOM4TE AUTOMAKE ACLOCAL WHICH ) So either you don't have the perl interpreter installed, or it does not find autoconf/automake/... (these are under debian separate packages), maybe a rehash (or starting in a new shell?) would help? Hope you manage with this, I am off for now, Arnd
ok, so I ran manually "perl detect-autoconf.pl" and he told me he could not find automake. So he could really find autoconf even if saying so. This is kind of a misleading error message... I went to the readme file fot the dependencies and added all the dev packages that where missing. I ran the compile_digikam script. Eventually, I came with this error (after a while compiling) dmetadata.cpp: In member function 'int Digikam::DMetadata::getImageRating() const': dmetadata.cpp:212: error: passing 'const Digikam::DMetadata' as 'this' argument of 'bool KExiv2Iface::KExiv2::getExifTagLong(const char*, long int&)' discards qualifiers make[4]: *** [dmetadata.lo] Erreur 1
Hmm, sounds a bit like an incompatibility with libkexiv2 - but you did install libkexiv2 from svn, right? (should be under libs in the installation directory and lib/libkexiv2.so.* in the compilation). Well, the script should take care of this, so I am not sure what is wrong now ... Gilles, do you have any idea?
Hum, sound like he use digiKam source code from svn without using extragear/libs from svn too (witch include libkexiv2/libkdcraw,kipi-plugins etc...) With digiKam from trunk require to use extragear/libs from trunk too... Gilles Caulier
Gilles, I use the scripts to download, compile and install digikam. In the second file compile_digikam.sh there is those lines : echo "Get, compile and install required libs and kipiplugins" svn co svn://anonsvn.kde.org/home/kde/trunk/extragear/libs Are those two lines what you are talking about?
Yes of course. in trunk/extragear/libs, you can find current implementation of libkexiv2, libkdcraw, libkipi, and kipi-plugins Gilles
@Gilles : Yep, all those directories are there. @Arnd : I am using the two scripts to download-compile-install, but I have libkexiv2-0 version 0.1.1-0ubuntu1 installed on my system. The directory [path]/temp/digikam/libs/libkexiv2 exist and has some files in it. @All : So, somebody else has any idears?
> but I have libkexiv2-0 version 0.1.1-0ubuntu1 installed on my system. Could you maybe remove this? (It might be that this is found instead of the [path]/temp/digikam/libs/libkexiv2 one? - just guessing ...)
You must remove libkexiv2 0.1.1 witch cannot be used to compile digiKam from svn trunk and compile and install extragear/libs before to compile digiKam again. Note than there is a risk than your old digiKam 0.9.1 will not work with the new libkexiv2 installed with extragear/libs because the binary compatibilty have been broken between 0.1.1 and 0.1.2. But digiKam 0.9.1 can be compiled with libkexiv2 0.1.2 (witch is the current version from svn trunk). If you want to use the both version without problem, just recompile and install digiKam 0.9.1 and al wil be fine. Note : i have fixed some crash duing to wrong tests on bytes array in libkexiv2 0.1.2 (appear for special cases). It will always better to use libkexiv2 0.1.2 instead 0.1.1... Gilles
Mmmm, I really need my current digiKam to work so I can't risk anything. I'll have to wait for the official version and I'll then test the bug.
OK, 0.9.2 is out. There are packages for kubuntu, see http://www.digikam.org/?q=download/binary/ Could you give this a fresh try? Maybe we can quickly close this bug ... ;-) Arnd
I have downloaded the latest 0.9.2 so I'll try to reproduce.
On Tuesday, 26. June 2007, Arnd Baecker wrote: [bugs.kde.org quoted mail] Hi Arnd, can you replace dapper with feisty in this page? I don't backport to dapper anymore (too much work). Achim > > Could you give this a fresh try? Maybe we can quickly close this bug ... ;-) > > Arnd > _______________________________________________ > Digikam-devel mailing list > Digikam-devel@kde.org > https://mail.kde.org/mailman/listinfo/digikam-devel > >
Achim, Patch from Marcel is already in 0.9.2 release. Gilles
Alright, this situation does not seems to reproduce in the 0.9.2 release. If it does it again, I'll reopen.