Comment 3 for bug 1403906

Revision history for this message
Florian Boucault (fboucault) wrote : Re: Crash using gallery with new qtubuntu-camera and thumbnailer

A few notes after a conjoint investigation between Bill and myself:

1. Downgrading only the thumbnailer to version 1.3+14.10.20141020-0ubuntu1 fixes the issue.
2. We reproduced the crash many times but never had a corrupt JPEG nor a corrupt embedded thumbnail (they were read perfectly fine by eog and the thumbnailer extracted without issue by exiv2 ex -e p)
3. If the crash does not happen during a given run of the gallery then it does not happen again after that until the following folder is deleted: ~/.cache/com.ubuntu.gallery/ Once deleted the crash happens during the subsequent reruns of the gallery.
4. The crash is happening in a call to libthumbnailer. I was able to retrace the .crash file generated by apport by first adding a line to it (Package: gallery-app) and then running apport-retrace --gdb PATH_TO_CRASH_FILE. I could extract the stack traces of all the threads: http://pastebin.ubuntu.com/9561659/ and here is the thread responsible for the crash:

#0 __libc_do_syscall () at ../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:44
#1 0xb58f8e5e in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#2 0xb58f9b4e in __GI_abort () at abort.c:89
#3 0xb58f40c4 in __assert_fail_base (fmt=0x1 <error: Cannot access memory at address 0x1>, assertion=0xad6c5178 "ifilename[0] == '/'",
    assertion@entry=0x0, file=0xad6c5130 "/build/buildd/thumbnailer-1.3+15.04.20141106~rtm/src/imagescaler.cpp", file@entry=0xac13f370 "\001",
    line=101, line@entry=3046891692,
    function=function@entry=0xad6c5088 "bool ImageScaler::scale(const string&, const string&, ThumbnailSize, const string&, const string&) const")
    at assert.c:92
#4 0xb58f415a in __GI___assert_fail (assertion=0x0, file=0xac13f370 "\001", line=3046891692,
    function=0xad6c5088 "bool ImageScaler::scale(const string&, const string&, ThumbnailSize, const string&, const string&) const") at assert.c:101
#5 0xad6be25e in ?? () from /usr/lib/arm-linux-gnueabihf/libthumbnailer.so.0
#6 0xad6c3c54 in ?? () from /usr/lib/arm-linux-gnueabihf/libthumbnailer.so.0
#7 0xad6c3e6a in Thumbnailer::get_thumbnail(std::string const&, ThumbnailSize, ThumbnailPolicy) ()
   from /usr/lib/arm-linux-gnueabihf/libthumbnailer.so.0
#8 0xad6c400e in Thumbnailer::get_thumbnail(std::string const&, ThumbnailSize) () from /usr/lib/arm-linux-gnueabihf/libthumbnailer.so.0
#9 0xad6ecd86 in ThumbnailGenerator::requestImage(QString const&, QSize*, QSize const&) ()
   from /usr/lib/arm-linux-gnueabihf/qt5/qml/Ubuntu/Thumbnailer.0.1/libthumbnailer-qml.so