Re: Cairo 1.023



Torsten Schoenfeld <kaffeetisch gmx de> writes:
Overview of changes in Cairo 1.023
==================================

When trying to package this up for Debian, I noticed a new test suite
failure. Further investigation showed that this is due to updated
dependencies, as we use libcairo 1.4.6 now. I have really no idea how to
debug this, as I get lost in a maze of callbacks and structs. My
experience with cairo is really, really limited :)

Anyway, to the actual failure:

$ gdb perl
[...]
(gdb) run -Iblib/lib -Iblib/arch t/CairoSurface.t 
[...]
ok 52

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1210292544 (LWP 32627)]
0xb7d2b18b in _cairo_scaled_font_subsets_foreach_internal (font_subsets=0x0, 
    font_subset_callback=0xb7d125d6 <_cairo_ps_surface_emit_unscaled_font_subset>, closure=0x828f8d0, 
is_scaled=0)
    at /tmp/buildd/libcairo-1.4.6/src/cairo-scaled-font-subsets.c:608
608             collection.glyphs_size = font_subsets->max_glyphs_per_unscaled_subset_used;
(gdb) bt
#0  0xb7d0918b in _cairo_scaled_font_subsets_foreach_internal (font_subsets=0x0, 
    font_subset_callback=0xb7cf05d6 <_cairo_ps_surface_emit_unscaled_font_subset>, closure=0x82fa8d0, 
is_scaled=0)
    at /tmp/buildd/libcairo-1.4.6/src/cairo-scaled-font-subsets.c:608
#1  0xb7d0926f in _cairo_scaled_font_subsets_foreach_unscaled (font_subsets=0x0, 
    font_subset_callback=0xb7cf05d6 <_cairo_ps_surface_emit_unscaled_font_subset>, closure=0x82fa8d0)
    at /tmp/buildd/libcairo-1.4.6/src/cairo-scaled-font-subsets.c:644
#2  0xb7cf06a7 in _cairo_ps_surface_emit_font_subsets (surface=0x82fa8d0) at 
/tmp/buildd/libcairo-1.4.6/src/cairo-ps-surface.c:724
#3  0xb7cf0e2b in _cairo_ps_surface_finish (abstract_surface=0x82fa8d0) at 
/tmp/buildd/libcairo-1.4.6/src/cairo-ps-surface.c:1183
#4  0xb7cdc8c9 in *INT_cairo_surface_finish (surface=0x82fa8d0) at 
/tmp/buildd/libcairo-1.4.6/src/cairo-surface.c:476
#5  0xb7cdc7d0 in *INT_cairo_surface_destroy (surface=0x82fa8d0) at 
/tmp/buildd/libcairo-1.4.6/src/cairo-surface.c:401
#6  0xb7cea5b4 in _cairo_paginated_surface_finish (abstract_surface=0x82e8c10) at 
/tmp/buildd/libcairo-1.4.6/src/cairo-paginated-surface.c:143
#7  0xb7cdc8c9 in *INT_cairo_surface_finish (surface=0x82e8c10) at 
/tmp/buildd/libcairo-1.4.6/src/cairo-surface.c:476
#8  0xb7cdc7d0 in *INT_cairo_surface_destroy (surface=0x82e8c10) at 
/tmp/buildd/libcairo-1.4.6/src/cairo-surface.c:401
#9  0xb7d76864 in XS_Cairo__Surface_DESTROY (my_perl=0x81b9008, cv=0x82cb280) at CairoSurface.xs:249
#10 0x080f3128 in Perl_pp_entersub (my_perl=0x81b9008) at pp_hot.c:2877
#11 0x08066be7 in S_call_body (my_perl=0x81b9008, myop=0xbf9e4a54, is_eval=0 '\0') at perl.c:2728
#12 0x08066762 in Perl_call_sv (my_perl=0x81b9008, sv=0x82cb280, flags=150) at perl.c:2646
#13 0x080fff8f in Perl_sv_clear (my_perl=0x81b9008, sv=0x8302520) at sv.c:5175
#14 0x081009a7 in Perl_sv_free (my_perl=0x81b9008, sv=0x8302520) at sv.c:5429
#15 0x08106d1a in Perl_sv_unref_flags (my_perl=0x81b9008, sv=0x82d5fe4, flags=1) at sv.c:8079
#16 0x080fe24e in Perl_sv_force_normal_flags (my_perl=0x81b9008, sv=0x82d5fe4, flags=1) at sv.c:4329
#17 0x0812df3b in Perl_leave_scope (my_perl=0x81b9008, base=8) at scope.c:925
#18 0x0812afc6 in Perl_pop_scope (my_perl=0x81b9008) at scope.c:144
#19 0x081375c5 in Perl_pp_leaveloop (my_perl=0x81b9008) at pp_ctl.c:1843
#20 0x080cdd51 in Perl_runops_debug (my_perl=0x81b9008) at dump.c:1459
#21 0x08065b65 in S_run_body (my_perl=0x81b9008, oldscope=1) at perl.c:2361
#22 0x080655db in perl_run (my_perl=0x81b9008) at perl.c:2283
#23 0x0806013e in main (argc=4, argv=0xbf9e4ef4, env=0xbf9e4f08) at perlmain.c:99

This segfault does not happen with cairo 1.2.4. I have no idea if this
is a regression in Cairo or if the perl bindings simply rely on some
internal thingy in cairo that has changed between the two releases. If
someone else could shed some light on this issue, I would be quite
happy. I hope this problem is reproducable - if not, I'm willing to try
any hint on debugging this issue.

Marc
-- 
BOFH #154:
You can tune a file system, but you can't tune a fish (from most
tunefs man pages)

Attachment: pgpNcQxt2nn63.pgp
Description: PGP signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]