Bug 370287 - Crash rotating image taken with Casio camera
Summary: Crash rotating image taken with Casio camera
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Metadata-Orientation (show other bugs)
Version: 5.2.0
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-10-08 10:01 UTC by Miquel Coll
Modified: 2020-08-12 08:17 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 5.3.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Miquel Coll 2016-10-08 10:01:45 UTC
I've noticed a strange crash.
I've an image taken with a Casio Exilim EX-Z150.
When I try to rotate it digikam crashes. This is the console log:

***
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena càmera nikon d5100/"
digikam.database: Starting scan!
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena càmera nikon d5100/"
digikam.general: LoadingCache slotFileDirty  "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena càmera nikon d5100/2013-08-14 19-41-41.JPG"
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena càmera nikon d5100/"
digikam.metaengine: Metadata for file "2013-08-14 19-41-41.JPG" written to file.
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena càmera nikon d5100/"
digikam.metaengine: Orientation => Exif.Image.Orientation =>  1
digikam.dimg: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena càmera nikon d5100/2013-08-14 19-41-41.JPG"  : JPEG file identified
digikam.metaengine: Loading image history  ""
digikam.metaengine: DateTime => Exif.Photo.DateTimeOriginal =>  QDateTime(2013-08-14 19:41:41.000 CEST Qt::TimeSpec(LocalTime))
digikam.database: Starting scan!
digikam.metaengine: Exif color-space tag is sRGB. Using default sRGB ICC profile.
digikam.general: mimetype =  "JPEG"  ext =  "JPG"
digikam.metaengine: Orientation => Exif.Image.Orientation =>  1
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena càmera nikon d5100/"
digikam.general: Stacked View Mode :  1
digikam.database: Starting scan!
digikam.metaengine: Exif.Image.Orientation tag set to:  1
digikam.metaengine: Exif Thumbnail Orientation:  1
digikam.metaengine: MetaEngine::metadataWritingMode 0
digikam.metaengine: Will write Metadata to file "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena càmera nikon d5100/JpegRotator-T16704.digikamtempfile.jpg"
digikam.metaengine: wroteComment:  true
digikam.metaengine: wroteEXIF:  true
digikam.metaengine: wroteIPTC:  true
digikam.metaengine: wroteXMP:  true
digikam5: tiffcomposite.cpp:749: virtual Exiv2::Internal::TiffComponent* Exiv2::Internal::TiffMnEntry::doAddPath(uint16_t, Exiv2::Internal::TiffPath&, Exiv2::Internal::TiffComponent*, Exiv2::Internal::TiffComponent::AutoPtr): L’asserció «mn_» ha fallat.
Avortat (bolcat de la imatge del nucli)
***
 I've been unable to reproduce it from gdb because when I enter the image digikam hangs and I can't even click the button to rotate the image.

But googling around Ive found this bug (Crash in exiv2 due to assertion when setting rating on jpg with a Casio makernote):
http://dev.exiv2.org/issues/1106

I'm using Ubuntu Gnome 16.04 with the packages provided by Philip Johnsson, and I had not installed exiv2. So I tried to install it:

$ sudo apt-get install exiv2
$ exiv2 --version
exiv2 0.25 001900 (64 bit build)
Copyright (C) 2004-2015 Andreas Huggel.

and restarted digikam. Now it's working fine!

This is the log from the console now:
***
digikam.general: mimetype =  "JPEG"  ext =  "JPG"
digikam.general: No write to baloo +++++++++++++++++++++++++++++++++++++
digikam.metaengine: Exiv2 ( 2 ) :  Directory Casio2 has an unexpected next pointer; ignored.

digikam.metaengine: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  ==> Title:  QMap()
digikam.metaengine: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  ==> Comment:  QMap()
digikam.metaengine: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  ==> Pick Label:  0
digikam.metaengine: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  ==> Color Label:  0
digikam.metaengine: Rating value to write is out of range!
digikam.general: Writting tags
digikam.general: Delete all keywords
digikam.metaengine: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  ==> Read Iptc Keywords:  ()
digikam.metaengine: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  ==> New Iptc Keywords:  ()
digikam.metaengine: xmlACDSee "<Categories></Categories>"
digikam.metaengine: MetaEngine::metadataWritingMode 0
digikam.metaengine: Will write Metadata to file "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"
digikam.metaengine: Exiv2 ( 2 ) :  Directory Casio2 has an unexpected next pointer; ignored.

digikam.metaengine: wroteComment:  true
digikam.metaengine: wroteEXIF:  true
digikam.metaengine: wroteIPTC:  true
digikam.metaengine: wroteXMP:  true
digikam.metaengine: Exiv2 ( 2 ) :  Directory Casio2 has an unexpected next pointer; ignored.

digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.database: Starting scan!
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.metaengine: Metadata for file "2013-08-14 19-41-41.JPG" written to file.
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.metaengine: Exiv2 ( 2 ) :  Directory Casio2 has an unexpected next pointer; ignored.

digikam.metaengine: Orientation => Exif.Image.Orientation =>  1
digikam.general: mimetype =  "JPEG"  ext =  "JPG"
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.database: Starting scan!
digikam.metaengine: Exif.Image.Orientation tag set to:  1
digikam.metaengine: Exif Thumbnail Orientation:  1
digikam.metaengine: MetaEngine::metadataWritingMode 0
digikam.metaengine: Will write Metadata to file "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/JpegRotator-J17816.digikamtempfile.jpg"
digikam.metaengine: Exiv2 ( 2 ) :  Directory Casio2 has an unexpected next pointer; ignored.

digikam.metaengine: wroteComment:  true
digikam.metaengine: wroteEXIF:  true
digikam.metaengine: wroteIPTC:  true
digikam.metaengine: wroteXMP:  true
digikam.metaengine: Exiv2 ( 2 ) :  Directory Casio2 has an unexpected next pointer; ignored.

digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.database: Starting scan!
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.metaengine: Metadata for file "JpegRotator-J17816.digikamtempfile.jpg" written to file.
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.general: Detected change, triggering rescan of "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/"
digikam.dimg: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  : JPEG file identified
digikam.database: Starting scan!
digikam.database: Scanning took 64 ms
digikam.database: Finishing took 148 ms
digikam.dimg: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  : JPEG file identified
digikam.dimg: "/home/miquel/sanas/fotos/2013/per ordenar/2013-08-14-estrena camera nikon d5100/2013-08-14 19-41-41.JPG"  : JPEG file identified
digikam.metaengine: Orientation => Exif.Image.Orientation =>  1
digikam.metaengine: Orientation => Exif.Image.Orientation =>  1
***

I think the error is in the third line:
***
digikam.metaengine: Exiv2 ( 2 ) :  Directory Casio2 has an unexpected next pointer; ignored.
***

Maybe updating version of Exiv2::Internal should solve this bug.
Comment 1 Miquel Coll 2016-10-08 10:02:33 UTC
Excuse the formatting, I haven't found an option to format console output!
Comment 2 Miquel Coll 2016-10-08 10:04:47 UTC
In gdb, when I enter the image it hangs. This is the backtrace:

***
[Switching to Thread 0x7fff3dffb700 (LWP 16325)]

Thread 25 "Thread (pooled)" hit Catchpoint 1 (exception thrown), 0x00007ffff436e8bd in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) 
(gdb) 
(gdb) 
(gdb) 
(gdb) bt
#0  0x00007ffff436e8bd in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1  0x00007ffff0519b25 in Exiv2::ImageFactory::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) ()
   from /usr/lib/x86_64-linux-gnu/libexiv2.so.14
#2  0x00007ffff67ef80f in Digikam::MetaEngine::load (this=this@entry=0x7fff3dffa500, filePath=...)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/dmetadata/metaengine.cpp:278
#3  0x00007ffff683c736 in Digikam::DMetadata::load (this=this@entry=0x7fff3dffa500, filePath=...)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/dmetadata/dmetadata.cpp:96
#4  0x00007ffff683c7c2 in Digikam::DMetadata::DMetadata (this=0x7fff3dffa500, filePath=...)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/dmetadata/dmetadata.cpp:63
#5  0x00007ffff688565a in Digikam::ThumbnailCreator::createThumbnail (this=this@entry=0xc1a000, info=..., detailRect=...)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/threadimageio/thumbnailcreator.cpp:468
#6  0x00007ffff68888ef in Digikam::ThumbnailCreator::load (this=0xc1a000, identifier=..., rect=..., pregenerate=pregenerate@entry=true)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/threadimageio/thumbnailcreator.cpp:264
#7  0x00007ffff68893c0 in Digikam::ThumbnailCreator::pregenerate (this=<optimized out>, identifier=...)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/threadimageio/thumbnailcreator.cpp:197
#8  0x00007ffff6897ef8 in Digikam::ThumbnailLoadingTask::execute (this=0x2a38d50)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/threadimageio/thumbnailtask.cpp:76
#9  0x00007ffff686d640 in Digikam::LoadSaveThread::run (this=0xc19ed0)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/threadimageio/loadsavethread.cpp:133
#10 0x00007ffff68b2d4e in Digikam::DynamicThread::DynamicThreadPriv::run (this=0xbeb370)
    at /build/digikam5-hOQgyH/digikam5-5.2.0/core/libs/threads/dynamicthread.cpp:183
#11 0x00007ffff4aca343 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff4acd84e in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007ffff0fc86fa in start_thread (arg=0x7fff3dffb700) at pthread_create.c:333
#14 0x00007ffff3e08b5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb) quit
A debugging session is active.

	Inferior 1 [process 16297] will be killed.

Quit anyway? (y or n) y
***
Comment 3 caulier.gilles 2016-10-08 11:52:35 UTC
Yes, it's an Exiv2 library crash.

Report this problem to Exiv2 bugzilla with relevant image to test.

Gilles Caulier
Comment 4 Miquel Coll 2016-10-08 16:52:37 UTC
Thanks Gilles, but the buf is solved in exiv2, I posted in the middle of the first comment:

***
But googling around Ive found this bug (Crash in exiv2 due to assertion when setting rating on jpg with a Casio makernote):
http://dev.exiv2.org/issues/1106

I'm using Ubuntu Gnome 16.04 with the packages provided by Philip Johnsson, and I had not installed exiv2. So I tried to install it:

$ sudo apt-get install exiv2
$ exiv2 --version
exiv2 0.25 001900 (64 bit build)
Copyright (C) 2004-2015 Andreas Huggel.

and restarted digikam. Now it's working fine!
***

So maybe it's the internal exiv2 version that Digikam uses?

Before installing exiv2 I got this error (virtual Exiv2::Internal::TiffComponent*) :
***
digikam5: tiffcomposite.cpp:749: virtual Exiv2::Internal::TiffComponent* Exiv2::Internal::TiffMnEntry::doAddPath(uint16_t, Exiv2::Internal::TiffPath&, Exiv2::Internal::TiffComponent*, Exiv2::Internal::TiffComponent::AutoPtr): L’asserció «mn_» ha fallat.
***
and after installing the package I got no errors, just an ignored warning message:
***
digikam.metaengine: Exiv2 ( 2 ) :  Directory Casio2 has an unexpected next pointer; ignored.
***

Miquel Coll
Comment 5 caulier.gilles 2016-10-10 16:34:00 UTC
No. digiKam do not have a copy of Exiv2 library. It's a run-time binary compatibility between Exiv2 .so and libdigikam.so

Gilles Caulier