Bug 4332

Summary: use CPU while loading some PDFs (type 3 fonts)
Product: poppler Reporter: Sebastien Bacher <seb128>
Component: cairo backendAssignee: poppler-bugs <poppler-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: rodrigo.starr
Version: unspecified   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

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.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.