Bug 322662 - Okular freezes when trying to print PDF
Summary: Okular freezes when trying to print PDF
Status: RESOLVED UPSTREAM
Alias: None
Product: okular
Classification: Applications
Component: PDF backend (show other bugs)
Version: 0.16.5
Platform: Arch Linux Linux
: NOR grave
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-21 20:23 UTC by Milian Wolff
Modified: 2013-07-22 22:23 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Milian Wolff 2013-07-21 20:23:52 UTC
When I try to print the following PDF with the form filled out, okular freezes at 100% CPU usage. Perf top shows:

Samples: 1M of event 'cycles', Event count (approx.): 31052716121                                                                                        
 23.49%  libz.so.1.2.8                          [.] inflate
 11.91%  chromium                               [.] 0x0000000003746c02
  7.01%  libpoppler.so.37.0.0                   [.] FlateStream::fill_buffer()
  5.30%  libz.so.1.2.8                          [.] adler32
  5.21%  libz.so.1.2.8                          [.] 0x000000000000a653
  4.23%  libc-2.17.so                           [.] __memcpy_ssse3_back
  3.03%  libpoppler.so.37.0.0                   [.] FlateStream::getRawChar()
  2.41%  libpoppler.so.37.0.0                   [.] FileStream::getChar()
  2.36%  libxul.so                              [.] 0x00000000009c7c26
  1.02%  libpoppler.so.37.0.0                   [.] GfxFont::readEmbFontFile(XRef*, int*)
  0.91%  libc-2.17.so                           [.] _int_malloc
  0.89%  [i915]                                 [k] 0x000000000005280b
  0.86%  libc-2.17.so                           [.] _int_free
  0.80%  libglib-2.0.so.0.3600.3                [.] 0x000000000008707a
  0.76%  libpoppler.so.37.0.0                   [.] FlateStream::getChar()

gdb shows:

(gdb) bt
#0  0x00007f85ad01d0c9 in inflate () from /usr/lib/libz.so.1
#1  0x00007f859d7c6491 in FlateStream::fill_buffer() () from /usr/lib/libpoppler.so.37
#2  0x00007f859d7c65d8 in FlateStream::lookChar() () from /usr/lib/libpoppler.so.37
#3  0x00007f859d80e0e4 in GfxFont::readEmbFontFile(XRef*, int*) () from /usr/lib/libpoppler.so.37
#4  0x00007f859d80eef2 in Gfx8BitFont::Gfx8BitFont(XRef*, char const*, Ref, GooString*, GfxFontType, Ref, Dict*) () from /usr/lib/libpoppler.so.37
#5  0x00007f859d8124fc in GfxFont::makeFont(XRef*, char const*, Ref, Dict*) () from /usr/lib/libpoppler.so.37
#6  0x00007f859d812623 in GfxFontDict::GfxFontDict(XRef*, Ref*, Dict*) () from /usr/lib/libpoppler.so.37
#7  0x00007f859d868bf6 in PSOutputDev::setupFonts(Dict*) () from /usr/lib/libpoppler.so.37
#8  0x00007f859d868cfe in PSOutputDev::setupResources(Dict*) () from /usr/lib/libpoppler.so.37
#9  0x00007f859d869077 in PSOutputDev::setupResources(Dict*) () from /usr/lib/libpoppler.so.37
#10 0x00007f859d869077 in PSOutputDev::setupResources(Dict*) () from /usr/lib/libpoppler.so.37
#11 0x00007f859d869077 in PSOutputDev::setupResources(Dict*) () from /usr/lib/libpoppler.so.37
#12 0x00007f859d869077 in PSOutputDev::setupResources(Dict*) () from /usr/lib/libpoppler.so.37
#13 0x00007f859d869077 in PSOutputDev::setupResources(Dict*) () from /usr/lib/libpoppler.so.37
#14 0x00007f859d869077 in PSOutputDev::setupResources(Dict*) () from /usr/lib/libpoppler.so.37
#15 0x00007f859d869077 in PSOutputDev::setupResources(Dict*) () from /usr/lib/libpoppler.so.37
#16 0x00007f859d8692a0 in PSOutputDev::writeDocSetup(PDFDoc*, Catalog*, int, int, bool) () from /usr/lib/libpoppler.so.37
#17 0x00007f859d86b618 in PSOutputDev::init(void (*)(void*, char const*, int), void*, PSFileType, char*, PDFDoc*, int, int, PSOutMode, int, int, int, int, bool, int, int, bool) () from /usr/lib/libpoppler.so.37
#18 0x00007f859dbb62fe in Poppler::PSConverter::convert() () from /usr/lib/libpoppler-qt4.so.4
#19 0x00007f859dde8efa in ?? () from /usr/lib/kde4/okularGenerator_poppler.so
#20 0x00007f85a1bde982 in ?? () from /usr/lib/kde4/okularpart.so
#21 0x00007f85a1be9763 in ?? () from /usr/lib/kde4/okularpart.so
---Type <return> to continue, or q <return> to quit---
#22 0x00007f85a1be9b3d in ?? () from /usr/lib/kde4/okularpart.so
#23 0x00007f85b1265ba8 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#24 0x00007f85b1c4afd2 in QAction::triggered(bool) () from /usr/lib/libQtGui.so.4
#25 0x00007f85b1c4c9a3 in QAction::activate(QAction::ActionEvent) () from /usr/lib/libQtGui.so.4
#26 0x00007f85b1c4cafc in QAction::event(QEvent*) () from /usr/lib/libQtGui.so.4
#27 0x00007f85b289c37f in KAction::event(QEvent*) () from /usr/lib/libkdeui.so.5
#28 0x00007f85b1c5112c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#29 0x00007f85b1c576f0 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#30 0x00007f85b2971f5a in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#31 0x00007f85b1251efd in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#32 0x00007f85b1c82456 in ?? () from /usr/lib/libQtGui.so.4
#33 0x00007f85b1c82584 in ?? () from /usr/lib/libQtGui.so.4
#34 0x00007f85b1c589c3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#35 0x00007f85b2971f5a in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#36 0x00007f85b1251efd in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#37 0x00007f85b1ceb729 in ?? () from /usr/lib/libQtGui.so.4
#38 0x00007f85b1cebac9 in ?? () from /usr/lib/libQtGui.so.4
#39 0x00007f85b1cc7a1f in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#40 0x00007f85b1cee232 in ?? () from /usr/lib/libQtGui.so.4
#41 0x00007f85ad4a7da6 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#42 0x00007f85ad4a80f8 in ?? () from /usr/lib/libglib-2.0.so.0
#43 0x00007f85ad4a819c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#44 0x00007f85b127eb85 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
#45 0x00007f85b1cee2e6 in ?? () from /usr/lib/libQtGui.so.4
#46 0x00007f85b1250b5f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#47 0x00007f85b1250e55 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#48 0x00007f85b1255f8b in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#49 0x000000000040825e in ?? ()
#50 0x00007f85b07cca15 in __libc_start_main () from /usr/lib/libc.so.6
#51 0x0000000000408e59 in _start ()


Reproducible: Always

Steps to Reproduce:
1. download KDE reimbursement form from http://ev.kde.org/resources/expense_report.pdf
2. fill in some fields
3. try to print to file
Actual Results:  
100% cpu usage, okular hangs, nothing gets printed

Expected Results:  
sane CPU usage, something gets printed
Comment 1 Albert Astals Cid 2013-07-21 21:03:28 UTC
Old poppler? I remember fixing this ages ago
Comment 2 Milian Wolff 2013-07-21 23:21:55 UTC
On ArchLinux? I doubt it - but well, what is "new"? Here's what I have:

milian@minime:~$ okular --version
Qt: 4.8.5
KDE Development Platform: 4.10.5
Okular: 0.16.5
milian@minime:~$ pacman -Ss poppler | grep installed
extra/poppler 0.22.5-1 [installed]
extra/poppler-data 0.4.6-1 [installed]
extra/poppler-glib 0.22.5-1 [installed]
extra/poppler-qt 0.22.5-1 [installed]
Comment 3 Milian Wolff 2013-07-21 23:24:08 UTC
This is my zlib version:
core/zlib 1.2.8-1 [installed]
Comment 4 Albert Astals Cid 2013-07-22 22:23:39 UTC
Seems something changed in the expense pdf file that makes poppler unhappy, as you can see it has nothing to do with okular, just call pdftops on the original expenses file (without filing anything) and you'll see it also takes ages.

Please open a bug at poppler bugzilla about this (i think i have a patch but still need to make sure it doesn't regress). https://bugs.freedesktop.org