Bug 399256 - Crash when trying to open a DJVU file with Okular
Summary: Crash when trying to open a DJVU file with Okular
Status: RESOLVED UPSTREAM
Alias: None
Product: okular
Classification: Applications
Component: DjVu backend (show other bugs)
Version: 1.5.1
Platform: Neon Linux
: NOR crash
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2018-09-30 20:07 UTC by Denis Karpovskii
Modified: 2018-10-06 08:43 UTC (History)
5 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Full backtrace (11.19 KB, text/plain)
2018-10-02 13:36 UTC, Denis Karpovskii
Details
File that Okular can't open (91.36 KB, image/vnd.djvu)
2018-10-03 08:25 UTC, Denis Karpovskii
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Denis Karpovskii 2018-09-30 20:07:35 UTC
Application: okular (1.5.1)

Qt Version: 5.11.1
Frameworks Version: 5.50.0
Operating System: Linux 4.18.11-041811-lowlatency x86_64
Distribution: KDE neon User Edition 5.13

-- Information about the crash:
Steps to reproduce:
1. Open a DJVU file with okular
2. See a crash
100% reproducible.
Tried with several djvu files.

System: fully upgraded KDE neon 18.04.

The crash can be reproduced every time.

-- Backtrace:
Application: Okular (okular), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f03c4d13800 (LWP 6945))]

Thread 4 (Thread 0x7f0398b9e700 (LWP 6955)):
[KCrash Handler]
#6  0x00007f0398cb9862 in DJVU::MMXControl::enable_mmx () at MMX.cpp:183
#7  0x00007f0398cace35 in DJVU::IW44Image::Transform::filter_begin (w=w@entry=1840, h=h@entry=1866) at IW44Image.cpp:1848
#8  0x00007f0398cace9a in DJVU::IW44Image::Transform::Decode::backward (p=0x7f03910e9010, w=1840, h=1866, rowsize=rowsize@entry=1856, begin=begin@entry=32, end=end@entry=16) at IW44Image.cpp:1875
#9  0x00007f0398cae579 in DJVU::IW44Image::Map::image (this=<optimized out>, subsample=subsample@entry=1, rect=..., img8=img8@entry=0x7f0391799010 "", rowsize=rowsize@entry=5286, pixsep=pixsep@entry=3, fast=0) at IW44Image.cpp:845
#10 0x00007f0398caf513 in DJVU::IWPixmap::get_pixmap (this=0x7f038c000ff0, subsample=1, rect=...) at IW44Image.cpp:1696
#11 0x00007f0398c3e323 in DJVU::DjVuImage::get_bg_pixmap (this=this@entry=0x7f0394028230, rect=..., subsample=subsample@entry=2, gamma=gamma@entry=2.2000000000000002, white=...) at DjVuImage.cpp:703
#12 0x00007f0398c411ea in DJVU::DjVuImage::get_pixmap (this=this@entry=0x7f0394028230, rect=..., subsample=subsample@entry=2, gamma=gamma@entry=2.2000000000000002, white=...) at DjVuImage.cpp:1076
#13 0x00007f0398c416f6 in DJVU::do_pixmap (dimg=..., get=<optimized out>, inrect=..., inall=..., gamma=2.2000000000000002, white=...) at DjVuImage.cpp:1219
#14 0x00007f0398c41d4f in DJVU::DjVuImage::get_pixmap (this=this@entry=0x7f0394028230, r=..., a=..., g=<optimized out>, w=...) at DjVuImage.cpp:1232
#15 0x00007f0398cd3f28 in ddjvu_page_render (page=page@entry=0x7f0394001510, mode=mode@entry=DDJVU_RENDER_COLOR, pagerect=pagerect@entry=0x7f0398b9dbc0, renderrect=renderrect@entry=0x7f0398b9dbb0, format=0x55ddf6908ac0, rowsize=6000, imagebuffer=0x7f039207b010 "") at ddjvuapi.cpp:2461
#16 0x00007f0398f3bfc2 in KDjVu::Private::generateImageTile (this=0x55ddf6871010, djvupage=djvupage@entry=0x7f0394001510, res=@0x7f0398b9dc94: 0, width=width@entry=1590, row=row@entry=0, xdelta=1500, height=2461, col=0, ydelta=1500) at ./generators/djvu/kdjvu.cpp:495
#17 0x00007f0398f3f079 in KDjVu::image (this=this@entry=0x55ddf6867cf0, page=0, width=width@entry=1590, height=height@entry=2461, rotation=rotation@entry=0) at ./generators/djvu/kdjvu.cpp:988
#18 0x00007f0398f37b25 in DjVuGenerator::image (this=0x55ddf64ab540, request=0x55ddf6471f40) at ./generators/djvu/generator_djvu.cpp:118
#19 0x00007f03a85094c5 in Okular::PixmapGenerationThread::run (this=0x55ddf6850b20) at ./core/generator_p.cpp:62
#20 0x00007f03c1120aab in QThreadPrivate::start (arg=0x55ddf6850b20) at thread/qthread_unix.cpp:367
#21 0x00007f03bd9d16db in start_thread (arg=0x7f0398b9e700) at pthread_create.c:463
#22 0x00007f03c0a1888f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f03a9f4b700 (LWP 6947)):
#0  0x00007f03c0a0bbf9 in __GI___poll (fds=0x7f03a4004db0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f03bb498439 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f03bb49854c in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f03c1346a9b in QEventDispatcherGlib::processEvents (this=0x7f03a4000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#4  0x00007f03c12eadea in QEventLoop::exec (this=this@entry=0x7f03a9f4ad70, flags=..., flags@entry=...) at kernel/qeventloop.cpp:214
#5  0x00007f03c1115b8a in QThread::exec (this=<optimized out>) at thread/qthread.cpp:525
#6  0x00007f03c178ee45 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007f03c1120aab in QThreadPrivate::start (arg=0x7f03c1a06d60) at thread/qthread_unix.cpp:367
#8  0x00007f03bd9d16db in start_thread (arg=0x7f03a9f4b700) at pthread_create.c:463
#9  0x00007f03c0a1888f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f03b2e16700 (LWP 6946)):
#0  0x00007f03c0a0bbf9 in __GI___poll (fds=0x7f03b2e15ca8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f03bddf7747 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007f03bddf936a in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007f03b5dd7129 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007f03c1120aab in QThreadPrivate::start (arg=0x55ddf6237400) at thread/qthread_unix.cpp:367
#5  0x00007f03bd9d16db in start_thread (arg=0x7f03b2e16700) at pthread_create.c:463
#6  0x00007f03c0a1888f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f03c4d13800 (LWP 6945)):
#0  0x00007f03bd9d79f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x7fff2b6a93c8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x55ddf6258dd8, cond=0x7fff2b6a93a0) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7fff2b6a93a0, mutex=0x55ddf6258dd8) at pthread_cond_wait.c:655
#3  0x00007f03bddf7952 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#4  0x00007f03bddf906f in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#5  0x00007f03bddf9180 in xcb_wait_for_reply () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#6  0x00007f03b5dec3e8 in QXcbWindow::frameMargins() const () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#7  0x00007f03c1da5872 in QWindow::frameMargins() const () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#8  0x00007f03c25f47d2 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007f03c25f4947 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007f03c25f5117 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007f03c25f8349 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007f03c259be8c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007f03c25a345f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007f03c12ecab8 in QCoreApplication::notifyInternal2 (receiver=0x55ddf662c8c0, event=0x7fff2b6a9830) at kernel/qcoreapplication.cpp:1048
#15 0x00007f03c1da130f in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#16 0x00007f03c1da1edd in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#17 0x00007f03c1d7af0b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#18 0x00007f03b5e61edb in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#19 0x00007f03c12eadea in QEventLoop::exec (this=this@entry=0x7fff2b6a99d0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:214
#20 0x00007f03c12f3fa0 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1336
#21 0x000055ddf4d527e7 in main (argc=<optimized out>, argv=<optimized out>) at ./shell/main.cpp:85

Reported using DrKonqi
Comment 1 Albert Astals Cid 2018-09-30 23:04:49 UTC
It works fine for me, this really seems like a bug in debian/ubuntu/neon

Assigning to the neon people for input
Comment 2 Denis Karpovskii 2018-10-02 13:36:48 UTC
Created attachment 115365 [details]
Full backtrace
Comment 3 Denis Karpovskii 2018-10-02 15:09:15 UTC
(In reply to Albert Astals Cid from comment #1)
> It works fine for me, this really seems like a bug in debian/ubuntu/neon
> 
> Assigning to the neon people for input

I've done some observation and it looks like the bug isn't related to Neon. I've tried to open a different djvu document and it works fine. Must be something with the file. I've tried to open it with several djvu readers (Evince, Zathura, Okular) and all of them got crashed. But some djvu readers on Windows can open it. I am not sure can I attach the file here because it's not freely distributable I think..
Comment 4 Albert Astals Cid 2018-10-02 19:32:06 UTC
Without a file to reproduce, there's nothing we can do.
Comment 5 Denis Karpovskii 2018-10-03 08:25:01 UTC
Created attachment 115374 [details]
File that Okular can't open

Okay. I unbundled the file to pages via djvmcvt, then bundled first two of them with djvm. Okular still crashes. But open-source WinDjView on Windows opens the file successfully.
Comment 6 Tobias Deiminger 2018-10-03 09:05:38 UTC
(In reply to Denis Karpovskii from comment #5)
> Created attachment 115374 [details]
> File that Okular can't open
> 
> Okay. I unbundled the file to pages via djvmcvt, then bundled first two of
> them with djvm. Okular still crashes. But open-source WinDjView on Windows
> opens the file successfully.

The file doesn't crash for me. From your backtrace it looks like crash happens inside libdjvulibre in a call to enable_mmx. So it might be processor/OS/compiler specific, and I guess it would be good to involve the upstream project via https://sourceforge.net/p/djvu/bugs?

Can you try if you can reproduce a crash with djview4? djview4 comes directly from the djvulibre project, if it crashes there it's justified to bother them.
Comment 7 Denis Karpovskii 2018-10-06 07:40:09 UTC
djview4 also crashes. I'll report the bug to them ASAP.