[KPhotoAlbum] 3.1.1 crashes on reading in new photos

Martin Jost lists at majo.name
Sun May 4 20:01:08 BST 2008

Martin Jost schrieb:
> I have 3.1.1 crashing on reading in new photos.
> (see backtrace below)
> This doesn't happen, if I move my photos taken in 2008 away, before 
> starting KPA. (So one of these is triggering the bug, while the rest of 
> 7881 photos don't trigger it - or just the fact, that it is parsing 
> *new* photos, as opposed to the ones already seen by KPA)
> Seems to be a exiv2 problem. Any recommendations on this ?
> I have:
>  > exiv2 -V
> exiv2 0.15
> [?1034hUsing host libthread_db library "/lib64/libthread_db.so.1".
> [Thread debugging using libthread_db enabled]
> [New Thread 0x2b89dc2ae4b0 (LWP 4167)]
> [KCrash handler]
> #5  0x00002b89dbfde340 in memcpy () from /lib64/libc.so.6
> #6  0x00002b89d501852b in Exiv2::ExifData::operator= ()
>     from /usr/lib64/libexiv2.so.0
> #7  0x000000000057f5ed in Exif::Info::metadata ()
> #8  0x0000000000533a58 in DB::FileInfo::parseEXIV2 ()

follow up on my own mail...

I think I found (at least part of) the culprit, but I'm not sure about 
how to clean up.
I recently updated my HW to a 64 Bit system. I also updated  my 
SuSE-Linux to 10.3, which choose the 64 bit version on update.
OTOH my "old" kphotoalbum-3.1.0 had been compiled on the "old" (32 bit) 
system, also all the supporting libs.
In the first step I just copied those over from the 32 bit system. These 
just worked as expected.

When I compiled 3.1.1 (on the 64 Bit system) it seems the following 
- The dependencies - among them libexiv2-0.16 - are installed in /pd/foto
  (./configure --prefix=/pd/foto)
- I pointed KPA during configure to this:
  pd at godot:/pd-sw/foto/kphotoalbum/kphotoalbum-3.1.1> less conf
  export PATH=/pd/sqlite2.8.16/bin:$PATH
  export CPPFLAGS="-I/pd/foto/include -I/pd/sqlite2.8.16/include"
  export LDFLAGS="-L/pd/foto/lib -L/pd/sqlite/2.8.16/lib"

(BTW: I got a error message during the configure run:
configure: creating ./config.status
wrong input (flag != 4) at admin/conf.change.pl line 117, <> line 1395.

- And configure most probably found it:
  checking whether support for EXIV2 should be compiled in... yes
  checking for exiv2 >= 0.15... yes
  checking EXIV2_CFLAGS...
  checking EXIV2_LIBS... -lexiv2

- But the resulting executable uses the lib /usr/lib64/libexiv2.so.0, 
which is probably too old, probably resulting in the crash:
  root at godot:/home/pd/pd-sw/foto/kphotoalbum/kphotoalbum-3.1.1> ldd 
        libexiv2.so.0 => /usr/lib64/libexiv2.so.0 (0x00002b76355c1000)

Questions: (All probably slightly off topic.... All info and pointers 
1. I reconfigured and recompiled both libexiv2 and KPA from scratch 
(make distclean, configure, make, make install)
   Still I got the "wrong" lib. How can I fix this ? (Besides fiddling 
with LD_LIBRARY_PATH and some such)

Fiddling with LD_LIBRARY_PATH unfortunately doesn't seem to fix it:

godot:/pd/foto/lib> echo $LD_LIBRARY_PATH
godot:/pd/foto/lib> ldd /opt/kde3/bin/kphotoalbum
        libexiv2.so.0 => /pd/foto/lib/libexiv2.so.0 (0x00002aefd81e1000)

KPA still crashes:

Überprüfung der Systemkonfiguration beim Start deaktiviert.

[?1034hUsing host libthread_db library "/lib64/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread 0x2ba61b3f14a0 (LWP 21702)]
[KCrash handler]
#5  0x00002ba61b121340 in memcpy () from /lib64/libc.so.6
#6  0x00002ba61415b12b in Exiv2::ExifData::operator= ()
   from /pd/foto/lib/libexiv2.so.0
#7  0x000000000057f5ed in Exif::Info::metadata ()
#8  0x0000000000533a58 in DB::FileInfo::parseEXIV2 ()
#9  0x000000000053a0a7 in DB::FileInfo::FileInfo ()
#10 0x000000000053a1e9 in DB::FileInfo::read ()
#11 0x000000000051b75a in DB::ImageInfo::readExif ()
#12 0x000000000051c1a7 in DB::ImageInfo::ImageInfo ()
#13 0x000000000053b0fc in DB::NewImageFinder::loadExtraFile ()
#14 0x000000000053b678 in DB::NewImageFinder::loadExtraFiles ()
#15 0x000000000053c42e in DB::NewImageFinder::findImages ()
#16 0x0000000000531607 in DB::ImageDB::slotRescan ()
#17 0x0000000000450501 in MainWindow::Window::delayedInit ()
#18 0x00000000004576a8 in MainWindow::Window::qt_invoke ()
#19 0x00002ba617546e9c in QObject::activate_signal ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#20 0x00002ba61782c482 in QSignal::signal ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#21 0x00002ba61755f21d in QSignal::activate ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#22 0x00002ba617565758 in QSingleShotTimer::event ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#23 0x00002ba6174f070d in QApplication::internalNotify ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#24 0x00002ba6174f1428 in QApplication::notify ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#25 0x00002ba6162493dd in KApplication::notify ()
   from /opt/kde3/lib64/libkdecore.so.4
#26 0x00002ba6174e6da7 in QEventLoop::activateTimers ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#27 0x00002ba6174a69e5 in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#28 0x00002ba617504f83 in QEventLoop::enterLoop ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#29 0x00002ba617504e32 in QEventLoop::exec ()
   from /usr/lib/qt3/lib64/libqt-mt.so.3
#30 0x0000000000448e69 in main ()

3. Is there a way to get the version string of an installed .so-file 
(e.g. /usr/lib64/libexiv2.so.0) so I know for sure, which version this is ?


More information about the Kphotoalbum mailing list