Bug#690799: Another gdb output

Kubo Hiroshi h-kubo at geisya.or.jp
Sat Jan 26 17:52:31 UTC 2013


Control: severity -1 grave

Hi, 

I investigated the problem further. 

The segmentation fault occurs when the thumbnail is shown, by selecting the menu
[View] - [Side pane].

Here I attach another file of the gdb output.

The segmentation fault is caused by the null pointer dereference in the function
active_edges(), which resides in cairo-1.12.2/src/cairo-polygon-intersect.c of
the cairo package.

Between the line 1233 and  1235 of cairo-1.12.2/src/cairo-polygon-intersect.c,
null pointer check is missing.

This seems to be a cairo-1.12.2's bug.
How about reassigning this bug to the cairo package ?

---
Kubo Hiroshi <h-kubo at geisya.or.jp>
-------------- next part --------------
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xadbc8b70 (LWP 6045)]
active_edges (polygon=0xadbc72e8, top=9322, left=0xb5e19fe4)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-polygon-intersect.c:1235
1235			if unlikely ((right->deferred.other))
(gdb) list
1230			    return;
1231		    } while (1);
1232	
1233		    right = left->next;
1234		    do {
1235			if unlikely ((right->deferred.other))
1236			    edges_end (right, top, polygon);
1237	
1238			winding[right->a_or_b] += right->edge.dir;
1239			if (is_zero (winding)) {
(gdb) p right
$1 = (cairo_bo_edge_t *) 0x0
(gdb) p *left
$2 = {a_or_b = 1, edge = {line = {p1 = {x = 14848, y = 8959}, p2 = {x = 14848, 
        y = 9322}}, top = 8959, bottom = 9322, dir = -1}, prev = 0xb5e15a48, 
  next = 0x0, deferred = {other = 0x0, top = 0}}
(gdb) where
#0  active_edges (polygon=0xadbc72e8, top=9322, left=0xb5e19fe4)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-polygon-intersect.c:1235
#1  intersection_sweep (polygon=0xadbc72e8, num_events=-1243501384, 
    start_events=0xadbc5e94)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-polygon-intersect.c:1271
#2  _cairo_polygon_intersect (a=a at entry=0xadbc72e8, 
    winding_a=winding_a at entry=0, b=0xadbc6ed8, winding_b=0)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-polygon-intersect.c:1466
#3  0xb772d58d in clip_and_composite_polygon (
    antialias=CAIRO_ANTIALIAS_DEFAULT, fill_rule=CAIRO_FILL_RULE_WINDING, 
    polygon=0xadbc72e8, extents=0xadbc76f0, compositor=0xb77d3880)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-spans-compositor.c:861
#4  clip_and_composite_polygon (compositor=0xb77d3880, extents=0xadbc76f0, 
    polygon=0xadbc72e8, fill_rule=CAIRO_FILL_RULE_WINDING, 
    antialias=CAIRO_ANTIALIAS_DEFAULT)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-spans-compositor.c:819
#5  0xb772e0cc in _cairo_spans_compositor_stroke (_compositor=0xb77d3880, 
    extents=0xadbc76f0, path=0x800d279c, style=0xadbc7a80, ctm=0xb5e4194c, 
    ctm_inverse=0xb5e4197c, tolerance=0.10000000000000001, 
    antialias=CAIRO_ANTIALIAS_DEFAULT)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-spans-compositor.c:985
#6  0xb76ea3bc in _cairo_compositor_stroke (compositor=0xb77d3880, 
    surface=surface at entry=0xb5e12840, op=op at entry=CAIRO_OPERATOR_OVER, 
    source=source at entry=0xadbc7aac, path=path at entry=0x800d279c, 
    style=style at entry=0xadbc7a80, ctm=ctm at entry=0xb5e4194c, 
    ctm_inverse=ctm_inverse at entry=0xb5e4197c, tolerance=0.10000000000000001, 
    tolerance at entry=<error reading variable: Could not find type for DW_OP_GNU_const_type>, antialias=antialias at entry=CAIRO_ANTIALIAS_DEFAULT, 
    clip=clip at entry=0xb5e00840)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-compositor.c:153
#7  0xb76fd1b1 in _cairo_image_surface_stroke (abstract_surface=0xb5e12840, 
    op=CAIRO_OPERATOR_OVER, source=0xadbc7aac, path=0x800d279c, 
    style=0xadbc7a80, ctm=0xb5e4194c, ctm_inverse=0xb5e4197c, 
    tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, 
    clip=0xb5e00840)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-image-surface.c:952
#8  0xb7731919 in _cairo_surface_stroke (surface=0xb5e12840, 
    op=CAIRO_OPERATOR_OVER, source=0xadbc7aac, path=0x800d279c, 
    stroke_style=0xadbc7a80, ctm=0xb5e4194c, ctm_inverse=0xb5e4197c, 
    tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, 
    clip=0xb5e00840)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-surface.c:2043
#9  0xb76f36da in _cairo_gstate_stroke (gstate=0xb5e41898, 
    path=path at entry=0x800d279c)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-gstate.c:1171
#10 0xb76ec31d in _cairo_default_context_stroke (abstract_cr=0x800d24d8)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo-default-context.c:965
#11 0xb76e46eb in INT_cairo_stroke (cr=0x800d24d8)
    at /build/buildd-cairo_1.12.2-2-i386-1cmzkR/cairo-1.12.2/src/cairo.c:2146
#12 0xad3b1b89 in CairoOutputDev::stroke(GfxState*) ()
   from /usr/lib/i386-linux-gnu/libpoppler-glib.so.8
#13 0xad154811 in Gfx::opStroke(Object*, int) ()
   from /usr/lib/i386-linux-gnu/libpoppler.so.19
#14 0xad14abfa in Gfx::execOp(Object*, Object*, int) ()
   from /usr/lib/i386-linux-gnu/libpoppler.so.19
#15 0xad151b90 in Gfx::go(bool) ()
   from /usr/lib/i386-linux-gnu/libpoppler.so.19
#16 0xad152068 in Gfx::display(Object*, bool) ()
   from /usr/lib/i386-linux-gnu/libpoppler.so.19
#17 0xad1934bf in Page::displaySlice(OutputDev*, double, double, int, bool, bool, int, int, int, int, bool, Catalog*, bool (*)(void*), void*, bool (*)(Annot*, void*), void*) () from /usr/lib/i386-linux-gnu/libpoppler.so.19
#18 0xad3a50da in ?? () from /usr/lib/i386-linux-gnu/libpoppler-glib.so.8
#19 0xb5f3ff34 in pdf_page_render (page=page at entry=0x803425a0, 
    width=width at entry=100, height=height at entry=141, rc=rc at entry=0x803425c0)
    at /build/buildd-evince_3.4.0-3.1-i386-gBFlOX/evince-3.4.0/./backend/pdf/ev-poppler.cc:359
#20 0xb5f405e3 in make_thumbnail_for_page (height=141, width=100, 
    rc=0x803425c0, poppler_page=0x803425a0)
    at /build/buildd-evince_3.4.0-3.1-i386-gBFlOX/evince-3.4.0/./backend/pdf/ev-poppler.cc:405
#21 pdf_document_get_thumbnail (document=0x8027a968, rc=0x803425c0)
    at /build/buildd-evince_3.4.0-3.1-i386-gBFlOX/evince-3.4.0/./backend/pdf/ev-poppler.cc:465
#22 0xb7f7a8e0 in ev_document_get_thumbnail (document=0x8027a968, 
    rc=rc at entry=0x803425c0)
    at /build/buildd-evince_3.4.0-3.1-i386-gBFlOX/evince-3.4.0/./libdocument/ev-document.c:606
#23 0xb7f39b33 in ev_job_thumbnail_run (job=0x805ab618)
    at /build/buildd-evince_3.4.0-3.1-i386-gBFlOX/evince-3.4.0/./libview/ev-jobs.c:817
#24 0xb7f38fdf in ev_job_run (job=job at entry=0x805ab618)
    at /build/buildd-evince_3.4.0-3.1-i386-gBFlOX/evince-3.4.0/./libview/ev-jobs.c:213
#25 0xb7f3aec3 in ev_job_thread (job=0x805ab618)
    at /build/buildd-evince_3.4.0-3.1-i386-gBFlOX/evince-3.4.0/./libview/ev-job-scheduler.c:204
#26 ev_job_thread_proxy (data=0x0)
    at /build/buildd-evince_3.4.0-3.1-i386-gBFlOX/evince-3.4.0/./libview/ev-job-scheduler.c:237
#27 0xb731beb3 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#28 0xb725ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
#29 0xb71c778e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
(gdb) 


More information about the pkg-gnome-maintainers mailing list