[cairo] Crash in 1.8.6 win32 with PDF surface
Gerdus van Zyl
gerdusvanzyl at gmail.com
Fri Apr 24 08:59:59 PDT 2009
Try reversing the lines:
cairo_surface_destroy(surface);
cairo_destroy(cr);
destroying the surface before the context looks suspect. and when
working with PDF you might want a cairo_surface_finish before
destroying.
On Fri, Apr 24, 2009 at 4:17 PM, Darren Gallagher <dazzag at gmail.com> wrote:
> Using 1.8.6 on windows (with pixman 0.15.2). Built using instructions here:
> http://www.williamcyap.com/software/cairo-lib/compiling-cairo-for-windows.xhtml
>
> produces a crash witin cairo_destroy() somewhere.
>
> The code is as follows:
>
> #include <cairo.h>
> #include <cairo-pdf.h>
>
> int main (int argc, char *argv[])
> {
> cairo_surface_t *surface;
> cairo_t *cr;
>
> surface = cairo_pdf_surface_create ("hellocairo.pdf" , 504, 648);
> cr = cairo_create (surface);
> cairo_set_source_rgb(cr, 0, 0, 0);
> cairo_select_font_face (cr, "serif", CAIRO_FONT_SLANT_NORMAL,
> CAIRO_FONT_WEIGHT_NORMAL);
> cairo_set_font_size (cr, 40.0);
> cairo_move_to(cr, 10.0, 50.0);
> cairo_show_text(cr, "Hello, Cairo!");
> cairo_show_page(cr);
> cairo_surface_destroy(surface);
> cairo_destroy(cr);
>
> return 0;
> }
>
> the stack is as follows:
>
> ntdll.dll!7c90120e()
> [Frames below may be incorrect and/or missing, no symbols loaded for
> ntdll.dll]
> ntdll.dll!7c96c201()
> ntdll.dll!7c96c63e()
> ntdll.dll!7c9603b0()
> kernel32.dll!7c85f8d7()
> msvcr80d.dll!_CrtIsValidHeapPointer(const void * pUserData=0x00955c50)
> Line 2072 C++
> msvcr80d.dll!_free_dbg_nolock(void * pUserData=0x00955c50, int
> nBlockUse=1) Line 1279 + 0x9 bytes C++
> msvcr80d.dll!_free_dbg(void * pUserData=0x00955c50, int nBlockUse=1)
> Line 1220 + 0xd bytes C++
> msvcr80d.dll!free(void * pUserData=0x00955c50) Line 1178 + 0xb
> bytes C++
> libcairod.dll!_cairo_truetype_subset_fini(_cairo_truetype_subset *
> subset=0x0012f22c) Line 1171 + 0xe bytes C
>
> libcairod.dll!_cairo_pdf_surface_emit_truetype_font_subset(_cairo_pdf_surface
> * surface=0x00436fe0, _cairo_scaled_font_subset * font_subset=0x0012f4c8)
> Line 3451 + 0xc bytes C
>
> libcairod.dll!_cairo_pdf_surface_emit_unscaled_font_subset(_cairo_scaled_font_subset
> * font_subset=0x0012f4c8, void * closure=0x00436fe0) Line 3722 + 0xd
> bytes C
> libcairod.dll!_cairo_sub_font_collect(void * entry=0x0043af78, void *
> closure=0x0012f614) Line 578 + 0x15 bytes C
>
> libcairod.dll!_cairo_scaled_font_subsets_foreach_internal(_cairo_scaled_font_subsets
> * font_subsets=0x004386b8, _cairo_status (_cairo_scaled_font_subset *, void
> *)* font_subset_callback=0x100b67a0, void * closure=0x00436fe0,
> cairo_subsets_foreach_type_t type=CAIRO_SUBSETS_FOREACH_UNSCALED) Line 889
> + 0xd bytes C
>
> libcairod.dll!_cairo_scaled_font_subsets_foreach_unscaled(_cairo_scaled_font_subsets
> * font_subsets=0x004386b8, _cairo_status (_cairo_scaled_font_subset *, void
> *)* font_subset_callback=0x100b67a0, void * closure=0x00436fe0) Line 918 +
> 0x13 bytes C
> libcairod.dll!_cairo_pdf_surface_emit_font_subsets(_cairo_pdf_surface *
> surface=0x00436fe0) Line 3774 + 0x18 bytes C
> libcairod.dll!_cairo_pdf_surface_finish(void *
> abstract_surface=0x00436fe0) Line 1195 + 0x9 bytes C
> libcairod.dll!cairo_surface_finish(_cairo_surface *
> surface=0x00436fe0) Line 530 + 0x10 bytes C
> libcairod.dll!_cairo_paginated_surface_finish(void *
> abstract_surface=0x00433998) Line 172 + 0xf bytes C
> libcairod.dll!cairo_surface_finish(_cairo_surface *
> surface=0x00433998) Line 530 + 0x10 bytes C
> libcairod.dll!cairo_surface_destroy(_cairo_surface *
> surface=0x00433998) Line 435 + 0x9 bytes C
> libcairod.dll!_cairo_gstate_fini(_cairo_gstate * gstate=0x00438a30)
> Line 205 + 0xf bytes C
> libcairod.dll!cairo_destroy(_cairo * cr=0x00438a10) Line 228 + 0xc
> bytes C
>> hellocairo.exe!main(int argc=2, char * * argv=0x00436f58) Line 49 +
>> 0xc bytes C
> hellocairo.exe!__tmainCRTStartup() Line 597 + 0x19 bytes C
> hellocairo.exe!mainCRTStartup() Line 414 C
> kernel32.dll!7c817067()
>
> Any help appreciated.
>
> Thanks
>
> Daz
>
>
> _______________________________________________
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo
>
More information about the cairo
mailing list