Bug 11828

Summary: segfault in fill operation for an xcb surface created in c and wrapped with PycairoContext_FromContext
Product: pycairo Reporter: Tom <hto>
Component: generalAssignee: Steve Chaplin <d74n5pohf9>
Status: RESOLVED NOTABUG QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: x86 (IA32)   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Tom 2007-08-03 02:06:17 UTC
I create a valid cairo context in c (which I can use w/o errors) for an xcb surface. Then I wrap it via the Pycairo_CAPI like this:

pcr = PycairoContext_FromContext(cr, NULL, NULL);

In Python I do
pcr.rectangle(0,0,10,10)
pcr.fill()

The fill operation triggers the following backtrace. I followed the execution path in pycairo and it doesn't seem to use anything unusual, meaning the same commands in c do not segfault.

(gdb) bt
#0  0xb7e98a1c in memcpy () from /lib/i686/cmov/libc.so.6
#1  0xb7aea285 in _get_image_surface (surface=0xb789f338, interest_rect=<value optimized out>, image_out=0xbfd12484, image_rect=0xbfd12520) at cairo-xcb-surface.c:412
#2  0xb7aea63a in _cairo_xcb_surface_acquire_dest_image (abstract_surface=0x8157258, interest_rect=0xbfd12514, image_out=0xbfd1251c, image_rect_out=0xbfd12520, image_extra=0xbfd12528) at cairo-xcb-surface.c:654
#3  0xb7abbbe0 in _cairo_surface_acquire_dest_image (surface=0x3374, interest_rect=0xbfd12514, image_out=0xbfd1251c, image_rect=0xbfd12520, image_extra=0xbfd12528) at cairo-surface.c:968
#4  0xb7abda38 in _fallback_init (state=0xbfd12510, dst=0x27100, x=13172, y=0, width=30, height=30) at cairo-surface-fallback.c:78
#5  0xb7abdd23 in _cairo_surface_fallback_fill_rectangles (surface=0x8157258, op=CAIRO_OPERATOR_OVER, color=0xbfd1310c, rects=0xbfd1259c, num_rects=1) at cairo-surface-fallback.c:1159
#6  0xb7abc0b1 in _cairo_surface_fill_rectangles (surface=0x8157258, op=CAIRO_OPERATOR_OVER, color=0xbfd1310c, rects=0xbfd1259c, num_rects=1) at cairo-surface.c:1314
#7  0xb7abc299 in _cairo_surface_fill_region (surface=0x8157258, op=CAIRO_OPERATOR_OVER, color=0xbfd1310c, region=0xbfd12f78) at cairo-surface.c:1262
#8  0xb7abf0ce in _clip_and_composite_trapezoids (src=<value optimized out>, op=<value optimized out>, dst=0x8157258, traps=0xbfd12fe4, clip=0x0, antialias=CAIRO_ANTIALIAS_DEFAULT)
    at cairo-surface-fallback.c:620
#9  0xb7abf35a in _cairo_surface_fallback_fill (surface=0x8157258, op=CAIRO_OPERATOR_OVER, source=0xbfd130b4, path=0x81a1a30, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001, 
    antialias=CAIRO_ANTIALIAS_DEFAULT) at cairo-surface-fallback.c:907
#10 0xb7abca68 in _cairo_surface_fill (surface=0x8157258, op=CAIRO_OPERATOR_OVER, source=0xbfd1319c, path=0x81a1a30, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001, 
    antialias=CAIRO_ANTIALIAS_DEFAULT) at cairo-surface.c:1456
#11 0xb7aafd33 in _cairo_gstate_fill (gstate=0x81a18e0, path=0x81a1a30) at cairo-gstate.c:1044
#12 0xb7aa87bc in *INT_cairo_fill_preserve (cr=0x81a18c0) at cairo.c:2098
#13 0xb7aa87e2 in cairo_fill (cr=0x81a18c0) at cairo.c:2074
#14 0xb7fc3d35 in ?? () from /usr/lib/python2.4/site-packages/cairo/_cairo.so
#15 0x081a18c0 in ?? ()
#16 0xb7dc394c in ?? ()
#17 0xb7fcbfa0 in ?? () from /usr/lib/python2.4/site-packages/cairo/_cairo.so
#18 0xb7e22040 in ?? ()
#19 0xb7e22040 in ?? ()
#20 0x00000000 in ?? ()
Comment 1 Tom 2007-08-03 13:48:13 UTC
It was just a weird combination of an old libxcb and debugger interaction. Sorry for the noise.

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.