Package: fbreader
Version: 0.12.10dfsg2-3
Severity: important
After starting fbreader (which takes 30 seconds), I go to the library
and hit settings. There I configure my ebook library (~/books), click
the "Look for books in subdirectories" button, and hit "OK".
After a little scanning, it totally crashes with the following backtrace:
(gdb) run
Starting program: /usr/bin/fbreader
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
loading /usr/lib/zlibrary/ui/zlui-qt4.so
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7ed10a2 in
ZLZipDir::collectFiles(std::vector<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >&, bool) () from /usr/lib/libzlcore.so.0.13
(gdb) br
Breakpoint 1 at 0x7ffff7ed10a2
(gdb) bt
#0 0x00007ffff7ed10a2 in
ZLZipDir::collectFiles(std::vector<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >&, bool) () at /usr/lib/libzlcore.so.0.13
#1 0x0000555555707015 in BooksDBUtil::resetZipInfo(ZLFile const&)
(zipFile=...) at ./fbreader/../zlibrary/core/include/shared_ptr.h:236
#2 0x00005555557071be in BooksDBUtil::listZipEntries(ZLFile const&,
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > >&) (zipFile=...,
entries=std::vector of length 0, capacity 0) at
./fbreader/../zlibrary/core/include/ZLFile.h:99
#3 0x00005555555cfbdf in
Library::collectBookFileNames(std::set<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > >&) const
(this=0x5555559ef710, bookFileNames=std::set with 87 elements = {...}) at
Library.cpp:83
#4 0x00005555555d0083 in Library::rebuildBookSet() const
(this=this@entry=0x5555559ef710) at Library.cpp:114
#5 0x00005555555d1390 in LibrarySynchronizer::run() (this=0x7fffffffb3b0) at
Library.cpp:170
#6 0x00007ffff7fb7ede in ZLQtProgressDialog::run(ZLRunnable&) () at
/usr/lib/zlibrary/ui/zlui-qt4.so
#7 0x00007ffff7ed5314 in ZLDialogManager::wait(ZLResourceKey const&,
ZLRunnable&) const () at /usr/lib/libzlcore.so.0.13
#8 0x00005555555cd23d in Library::synchronize() const
(this=this@entry=0x5555559ef710) at /usr/include/c++/8/bits/basic_string.h:936
#9 0x00005555555cd2e9 in Library::authors() const (this=0x5555559ef710) at
Library.cpp:310
#10 0x00005555555a98ee in LibraryByAuthorView::makeUpToDate()
(this=0x5555557ec4d0) at LibraryByAuthorView.cpp:122
#11 0x00005555555896ca in LibraryView::paint() (this=0x5555557ec4d0) at
LibraryView.cpp:38
#12 0x00007ffff7fbba6e in ZLQtViewWidget::Widget::paintEvent(QPaintEvent*) ()
at /usr/lib/zlibrary/ui/zlui-qt4.so
#13 0x00007ffff59aca28 in QWidget::event(QEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#14 0x00007ffff595aa2c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#15 0x00007ffff5961212 in QApplication::notify(QObject*, QEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#16 0x00007ffff63edafb in QCoreApplication::notifyInternal(QObject*, QEvent*)
() at /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#17 0x00007ffff59a7203 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion
const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#18 0x00007ffff59a7dfa in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*,
QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*,
QWidgetBackingStore*) ()
at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#19 0x00007ffff59a6f09 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion
const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#20 0x00007ffff59a7dfa in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*,
QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*,
QWidgetBackingStore*) ()
at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#21 0x00007ffff59a6f09 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion
const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#22 0x00007ffff5b5faa8 in () at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#23 0x00007ffff599b350 in QWidgetPrivate::syncBackingStore() () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#24 0x00007ffff59ad138 in QWidget::event(QEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#25 0x00007ffff5d4c84b in QMainWindow::event(QEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#26 0x00007ffff595aa2c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#27 0x00007ffff5961212 in QApplication::notify(QObject*, QEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#28 0x00007ffff63edafb in QCoreApplication::notifyInternal(QObject*, QEvent*)
() at /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#29 0x00007ffff5b60f4d in () at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#30 0x00007ffff599d66d in QWidget::repaint(QRect const&) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#31 0x00007ffff599d6cc in QWidget::repaint() () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#32 0x00007ffff7edb75a in ZLApplication::refreshWindow() () at
/usr/lib/libzlcore.so.0.13
#33 0x0000555555699999 in FBReader::refreshWindow() (this=0x5555558362e0) at
FBReader.cpp:204
#34 0x00007ffff7ed6408 in ZLOptionsDialog::run() () at
/usr/lib/libzlcore.so.0.13
#35 0x00007ffff7f0a036 in ZLDesktopOptionsDialog::run() () at
/usr/lib/libzlcore.so.0.13
#36 0x000055555568fd8e in ShowOptionsDialogAction::run() (this=<optimized out>)
at ./fbreader/../zlibrary/core/include/shared_ptr.h:240
#37 0x00007ffff7edc157 in
ZLApplication::doAction(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) () at
/usr/lib/libzlcore.so.0.13
#38 0x00007ffff6401c90 in QMetaObject::activate(QObject*, QMetaObject const*,
int, void**) () at /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#39 0x00007ffff5955012 in QAction::triggered(bool) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#40 0x00007ffff59562a7 in QAction::activate(QAction::ActionEvent) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#41 0x00007ffff5cf2da3 in () at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#42 0x00007ffff5cf2ed4 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) ()
at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#43 0x00007ffff5dad86a in QToolButton::mouseReleaseEvent(QMouseEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#44 0x00007ffff59aca28 in QWidget::event(QEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#45 0x00007ffff595aa2c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#46 0x00007ffff59613fc in QApplication::notify(QObject*, QEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#47 0x00007ffff63edafb in QCoreApplication::notifyInternal(QObject*, QEvent*)
() at /usr/lib/x86_64-linux-gnu/libQtCore.so.4
--Type <RET> for more, q to quit, c to continue without paging--
#48 0x00007ffff5960b3b in QApplicationPrivate::sendMouseEvent(QWidget*,
QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#49 0x00007ffff59d3d84 in () at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#50 0x00007ffff59d29d0 in QApplication::x11ProcessEvent(_XEvent*) () at
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#51 0x00007ffff59fa06c in () at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#52 0x00007ffff564ef2e in g_main_context_dispatch () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#53 0x00007ffff564f1c8 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#54 0x00007ffff564f25c in g_main_context_iteration () at
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#55 0x00007ffff641a8e1 in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
at /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#56 0x00007ffff59fa1f7 in () at /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#57 0x00007ffff63ec38f in
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at
/usr/lib/x86_64-linux-gnu/libQtCore.so.4
#58 0x00007ffff63ec65e in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at
/usr/lib/x86_64-linux-gnu/libQtCore.so.4
#59 0x00007ffff63f1b2a in QCoreApplication::exec() () at
/usr/lib/x86_64-linux-gnu/libQtCore.so.4
#60 0x00007ffff7fbd527 in ZLQtLibraryImplementation::run(ZLApplication*) () at
/usr/lib/zlibrary/ui/zlui-qt4.so
#61 0x000055555558696c in main(int, char**) (argc=<optimized out>,
argv=<optimized out>) at /usr/include/c++/8/bits/char_traits.h:285
(gdb)
It looks like it hit a problem in a Zip routine of some sort? It seems
like this specific zip file is causing some trouble:
(gdb) up
#1 0x0000555555707015 in BooksDBUtil::resetZipInfo (zipFile=...) at
./fbreader/../zlibrary/core/include/shared_ptr.h:236
236 ./fbreader/../zlibrary/core/include/shared_ptr.h: No such file or
directory.
(gdb) p zipFile
$1 = (const ZLFile &) @0x7fffffffaef0: {static ourPlainStreamCache = {<No data
fields>},
myPath =
"/srv/books/.git/annex/objects/42/k6/SHA256E-s314645--55529471a826d0e5dfeb8ac1b720e0e09ed0adf2b511d70910cb953e57155ccc.zip:SHA256E-s314645--55529471a826d0e5dfeb8ac1b720e0e09ed0adf2b511d70910cb953e57155"...,
myNameWithExtension =
"SHA256E-s314645--55529471a826d0e5dfeb8ac1b720e0e09ed0adf2b511d70910cb953e57155ccc.zip",
myNameWithoutExtension =
"SHA256E-s314645--55529471a826d0e5dfeb8ac1b720e0e09ed0adf2b511d70910cb953e57155ccc",
myExtension = "zip", myArchiveType = ZLFile::ZIP, myInfo = {Exists = true,
IsDirectory = false, Size = 4096}, myInfoIsFilled = true}
mupdf can read this file without problem. One interesting thing in
that filename is the colo in the middle: that should be a slash, as
the first .zip path is actually a directory (git-annex oddity).
If I block (read, not execute) access to the git-annex directory, the
problem goes away, so this seems to be specifically a problem with a
directory structure like:
foo.zip/foo.zip
... although I haven't tested that directly to confirm.
-- System Information:
Debian Release: 10.1
APT prefers stable-debug
APT policy: (500, 'stable-debug'), (500, 'stable'), (1, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.19.0-6-amd64 (SMP w/4 CPU cores)
Locale: LANG=fr_CA.UTF-8, LC_CTYPE=fr_CA.UTF-8 (charmap=UTF-8),
LANGUAGE=fr_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages fbreader depends on:
ii libc6 2.28-10
ii libgcc1 1:8.3.0-6
ii libsqlite3-0 3.27.2-3
ii libstdc++6 8.3.0-6
ii libzlcore0.13 0.12.10dfsg2-3
ii libzltext0.13 0.12.10dfsg2-3
ii libzlui-qt4 0.12.10dfsg2-3
Versions of packages fbreader recommends:
ii sensible-utils 0.0.12
fbreader suggests no packages.
-- no debconf information