Bug 143200 - Renaming like crasy with F2 crash digikam
Summary: Renaming like crasy with F2 crash digikam
Status: RESOLVED WORKSFORME
Alias: None
Product: digikam
Classification: Applications
Component: AdvancedRename-engine (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-03-19 02:59 UTC by Alexandre Racine
Modified: 2017-08-15 11:26 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 0.9.3


Attachments
Crash report - F2, paste, enter, rince repeat and crash (5.73 KB, text/plain)
2007-03-19 03:00 UTC, Alexandre Racine
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexandre Racine 2007-03-19 02:59:08 UTC
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.
Comment 1 Alexandre Racine 2007-03-19 03:00:27 UTC
Created attachment 20029 [details]
Crash report - F2, paste, enter, rince repeat and crash
Comment 2 Marcel Wiesweg 2007-04-01 14:53:11 UTC
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.
Comment 3 Alexandre Racine 2007-04-02 05:30:55 UTC
Some kind of race condition? (In more human terms).
You have the report, you can do what you want with it ;)
Comment 4 Marcel Wiesweg 2007-04-02 22:14:40 UTC
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)
Comment 5 caulier.gilles 2007-04-20 14:31:46 UTC
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
Comment 6 Alexandre Racine 2007-04-21 03:18:25 UTC
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?
Comment 7 Alexandre Racine 2007-04-21 03:19:04 UTC
Oh and I am now with Fiesty (7.04).
Comment 8 Arnd Baecker 2007-04-21 08:50:46 UTC
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
Comment 9 caulier.gilles 2007-04-21 09:06:59 UTC
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
Comment 10 Alexandre Racine 2007-04-21 20:40:16 UTC
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.
Comment 11 Arnd Baecker 2007-04-21 21:17:11 UTC
>  ./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
Comment 12 Alexandre Racine 2007-04-22 00:11:05 UTC
>> 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)

Comment 13 Arnd Baecker 2007-04-22 00:55:18 UTC
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
Comment 14 Alexandre Racine 2007-04-22 21:17:32 UTC
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
Comment 15 Arnd Baecker 2007-04-22 21:57:31 UTC
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?
Comment 16 caulier.gilles 2007-04-23 08:34:39 UTC
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
Comment 17 Alexandre Racine 2007-04-23 18:52:34 UTC
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?
Comment 18 caulier.gilles 2007-04-23 19:53:40 UTC
Yes of course. in trunk/extragear/libs, you can find current implementation of libkexiv2, libkdcraw, libkipi, and kipi-plugins

Gilles
Comment 19 Alexandre Racine 2007-04-23 22:01:17 UTC
@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?
Comment 20 Arnd Baecker 2007-04-23 22:15:35 UTC
> 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 ...)
Comment 21 caulier.gilles 2007-04-24 09:14:33 UTC
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 
Comment 22 Alexandre Racine 2007-04-24 18:23:01 UTC
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.
Comment 23 Arnd Baecker 2007-06-26 10:00:45 UTC
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
Comment 24 Alexandre Racine 2007-06-27 14:24:51 UTC
I have downloaded the latest 0.9.2 so I'll try to reproduce.
Comment 25 Achim Bohnet 2007-06-27 19:32:22 UTC
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
> 
> 

Comment 26 caulier.gilles 2007-06-27 19:39:49 UTC
Achim, 

Patch from Marcel is already in 0.9.2 release. 

Gilles
Comment 27 Alexandre Racine 2007-06-28 02:35:50 UTC
Alright, this situation does not seems to reproduce in the 0.9.2 release. If it does it again, I'll reopen.