Bug 4332 - use CPU while loading some PDFs (type 3 fonts)
use CPU while loading some PDFs (type 3 fonts)
Status: RESOLVED FIXED
Product: poppler
Classification: Unclassified
Component: cairo backend
unspecified
x86 (IA32) Linux (All)
: medium normal
Assigned To: poppler-bugs
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2005-09-01 01:47 UTC by Sebastien Bacher
Modified: 2012-02-17 06:48 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sebastien Bacher 2005-09-01 01:47:49 UTC
This bug is based on http://bugzilla.ubuntu.com/show_bug.cgi?id=14348

"Up to date Breezy, evince refuses to load a particular PDF (attached, not very
big). It will thumbnail the first 2 or 3 pages, maybe even display them (depends
on the mood it seems), but all other thumbnails will stay blank, as will the
corresponding pages if click on them in a hope the it would evince up...
Tried with Acrobat Reader, no problems at all.
...
http://bugzilla.ubuntu.com/attachment.cgi?id=3451
won't load this document"
Comment 1 Sebastien Bacher 2005-09-01 01:48:44 UTC
it keeps using the CPU, backtrace while doing that:

(gdb) thread apply all bt

Thread 2 (Thread -1229333584 (LWP 2807)):
#0  0xb747b4d5 in _cairo_pixman_composite_tri_fan ()
   from /usr/lib/libcairo.so.2
#1  0xb747cb09 in _cairo_pixman_composite_tri_fan ()
   from /usr/lib/libcairo.so.2
#2  0xb746da62 in _cairo_pixman_region_intersect () from /usr/lib/libcairo.so.2
#3  0xb7453889 in cairo_image_surface_get_height () from /usr/lib/libcairo.so.2
#4  0xb74586f9 in cairo_surface_set_device_offset ()
   from /usr/lib/libcairo.so.2
#5  0xb7450d7c in cairo_font_options_get_hint_metrics ()
   from /usr/lib/libcairo.so.2
#6  0xb74508fe in cairo_font_options_get_hint_metrics ()
   from /usr/lib/libcairo.so.2
#7  0xb7450ed5 in cairo_font_options_get_hint_metrics ()
   from /usr/lib/libcairo.so.2
#8  0xb744b91e in cairo_mask () from /usr/lib/libcairo.so.2
#9  0xb74d6901 in CairoOutputDev::drawImageMask (this=0x82ab890,
    state=0x840e2e0, ref=0x0, str=0x8321c78, width=10, height=10, invert=1,
    inlineImg=1) at CairoOutputDev.cc:498
#10 0xb74f0c0b in Gfx::doImage (this=0x8326f18, ref=0x0, str=0x8321c78,
    inlineImg=1) at Gfx.cc:2617
#11 0xb74f1317 in Gfx::opBeginImage (this=0x8326f18, args=0xb6b9cd44,
---Type <return> to continue, or q <return> to quit---
    numArgs=0) at Gfx.cc:2940
#12 0xb74eb94c in Gfx::execOp (this=0x8326f18, cmd=0xb6b9cda4,
    args=0xb6b9cd44, numArgs=0) at Gfx.cc:660
#13 0xb74ebabc in Gfx::go (this=0x8326f18, topLevel=0) at Gfx.cc:551
#14 0xb74ebf6b in Gfx::display (this=0x8326f18, obj=0xb6b9cf94, topLevel=0)
    at Gfx.cc:523
#15 0xb74f30b5 in Gfx::doShowText (this=0x8326f18, s=0x8284168) at Gfx.cc:2382
#16 0xb74f3b70 in Gfx::opShowSpaceText (this=0x8326f18, args=0xb6b9d134,
    numArgs=1) at Gfx.cc:2295
#17 0xb74eb94c in Gfx::execOp (this=0x8326f18, cmd=0xb6b9d194,
    args=0xb6b9d134, numArgs=1) at Gfx.cc:660
#18 0xb74ebabc in Gfx::go (this=0x8326f18, topLevel=1) at Gfx.cc:551
#19 0xb74ebf6b in Gfx::display (this=0x8326f18, obj=0xb6b9d234, topLevel=1)
    at Gfx.cc:523
#20 0xb753c544 in Page::displaySlice (this=0x8297d28, out=0x82ab890,
    hDPI=50.117646217346191, vDPI=50.117646217346191, rotate=0, crop=1,
    sliceX=0, sliceY=0, sliceW=426, sliceH=551, links=0x0, catalog=0x8298118,
    abortCheckCbk=0, abortCheckCbkData=0x0, annotDisplayDecideCbk=0,
    annotDisplayDecideCbkData=0x0) at Page.cc:364
#21 0xb76e34ca in poppler_page_render_to_pixbuf (page=0x8321188, src_x=0,
    src_y=0, src_width=426, src_height=551, scale=0.69607841968536377,
    rotation=0, pixbuf=0x82e2048) at poppler-page.cc:305
#22 0x0808b4f0 in pdf_document_get_type ()
---Type <return> to continue, or q <return> to quit---
#23 0x08089904 in ev_document_render_pixbuf ()
#24 0x080629ef in ev_job_render_run ()
#25 0x080614cb in ev_document_types_add_filters ()
#26 0x080615d0 in ev_document_types_add_filters ()
#27 0xb71df844 in g_static_private_free () from /usr/lib/libglib-2.0.so.0
#28 0xb76ef361 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#29 0xb70a6dbe in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 1 (Thread -1227004224 (LWP 2806)):
#0  0xffffe410 in ?? ()
#1  0xbfab3448 in ?? ()
#2  0x00000493 in ?? ()
#3  0x00000009 in ?? ()
#4  0xb709d2d4 in poll () from /lib/tls/i686/cmov/libc.so.6
#5  0xb71c62e8 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#6  0xb71c6783 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#7  0xb79c8606 in IA__gtk_main () at gtkmain.c:976
#8  0x0807bdfb in main ()
#0  0xffffe410 in ?? ()
Comment 2 Rodrigo Starr 2005-09-12 19:58:57 UTC
I have found a file with a similar problem:

http://prdownloads.sourceforge.net/aglets/manual.pdf?download

In commom, both of them make heavy use of Type 3 fonts.

Acrobat-7 does not do a very good job either, but is faster (by far) than evince.

Tested in an amd64 (dual core, 3800+, 1G memory), running gentoo, with Cairo and
Glitz. and in another amd64 (single core, 3000+, 512 M memory), running Ubuntu
5.04 (Hoary) (evince 0.1.9-0ubuntu1).

In evince 0.1.9, this file is "less slow" (but still CPU intensive), than in
evince 0.4

Changed the summary to include (type 3 fonts)
Comment 3 Rodrigo Starr 2005-09-12 20:02:37 UTC
Added myself to CC (sorry)
Comment 4 Sebastien Bacher 2005-09-18 02:53:48 UTC
another bugzilla with an example:
http://bugzilla.ubuntu.com/show_bug.cgi?id=15693
Comment 5 Adrian Johnson 2012-02-17 06:48:42 UTC
This was fixed about 3 years ago by the cairo user font patches.