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
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. com.ubuntu. gallery/ Once deleted the crash happens during the subsequent reruns of the gallery. pastebin. ubuntu. com/9561659/ and here is the thread responsible for the crash:
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/
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://
#0 __libc_do_syscall () at ../ports/ sysdeps/ unix/sysv/ linux/arm/ libc-do- syscall. S:44 sysdeps/ unix/sysv/ linux/raise. c:56 0xad6c5178 "ifilename[0] == '/'", entry=0x0, file=0xad6c5130 "/build/ buildd/ thumbnailer- 1.3+15. 04.20141106~ rtm/src/ imagescaler. cpp", file@entry= 0xac13f370 "\001", 3046891692, function@ entry=0xad6c508 8 "bool ImageScaler: :scale( const string&, const string&, ThumbnailSize, const string&, const string&) const") 0xad6c5088 "bool ImageScaler: :scale( const string&, const string&, ThumbnailSize, const string&, const string&) const") at assert.c:101 arm-linux- gnueabihf/ libthumbnailer. so.0 arm-linux- gnueabihf/ libthumbnailer. so.0 :get_thumbnail( std::string const&, ThumbnailSize, ThumbnailPolicy) () arm-linux- gnueabihf/ libthumbnailer. so.0 :get_thumbnail( std::string const&, ThumbnailSize) () from /usr/lib/ arm-linux- gnueabihf/ libthumbnailer. so.0 tor::requestIma ge(QString const&, QSize*, QSize const&) () arm-linux- gnueabihf/ qt5/qml/ Ubuntu/ Thumbnailer. 0.1/libthumbnai ler-qml. so
#1 0xb58f8e5e in __GI_raise (sig=sig@entry=6) at ../nptl/
#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=
assertion@
line=101, line@entry=
function=
at assert.c:92
#4 0xb58f415a in __GI___assert_fail (assertion=0x0, file=0xac13f370 "\001", line=3046891692,
function=
#5 0xad6be25e in ?? () from /usr/lib/
#6 0xad6c3c54 in ?? () from /usr/lib/
#7 0xad6c3e6a in Thumbnailer:
from /usr/lib/
#8 0xad6c400e in Thumbnailer:
#9 0xad6ecd86 in ThumbnailGenera
from /usr/lib/