Package: libsdl-pango1 Version: 0.1.2-1 Severity: normal Hi,
I noticed a crash which happens if SDLPango_SetText_GivenAlignment is used with a small maximal size. SDLPango_SetText seems not to be affected so it may be a bug in the API extension bug. A workaround is to increase the maximal width to the text width (which may be large if no linebreaks are found). This bug happened again in hex-a-hop which seems to be a good test case for SDL Pango. See #439393 with debian/ from svn, revision 3860. I suggest to test this also with the height instead of width. What happens if the text size is larger than window width? Another crash? There are many corner cases which should explicetely be tested! I attached a test file based on a simplified testbench.c program from SDL Pango source. $ ./testbench *** glibc detected *** ./testbench: free(): invalid pointer: 0x0809d900 *** ======= Backtrace: ========= /lib/libc.so.6[0xb7d7915e] /lib/libc.so.6(cfree+0x90)[0xb7d7c7b0] /usr/lib/libSDL-1.2.so.0(SDL_FreeSurface+0xda)[0xb7e87eaa] ./testbench[0x80488f7] /lib/libc.so.6(__libc_start_main+0xdc)[0xb7d26ebc] ./testbench[0x80487a1] ======= Memory map: ======== 08048000-08049000 r-xp 00000000 08:01 4244160 /tmp/testbench 08049000-0804a000 rw-p 00000000 08:01 4244160 /tmp/testbench 0804a000-080ab000 rw-p 0804a000 00:00 0 [heap] b7400000-b7421000 rw-p b7400000 00:00 0 b7421000-b7500000 ---p b7421000 00:00 0 b75cc000-b75d6000 r-xp 00000000 08:01 5341566 /lib/libgcc_s.so.1 b75d6000-b75d7000 rw-p 00009000 08:01 5341566 /lib/libgcc_s.so.1 b75e9000-b75fa000 r--p 00000000 08:01 4034445 /usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf b75fa000-b75fc000 r-xp 00000000 08:01 3916715 /usr/lib/pango/1.5.0/modules/pango-basic-fc.so b75fc000-b75fd000 rw-p 00001000 08:01 3916715 /usr/lib/pango/1.5.0/modules/pango-basic-fc.so b75fd000-b7603000 r--s 00000000 08:01 1360299 /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-x86.cache-2 b7603000-b7604000 r--s 00000000 08:01 1363024 /var/cache/fontconfig/75a2cd575a62c63e802c11411fb87c37-x86.cache-2 b7604000-b760a000 r--s 00000000 08:01 1363023 /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-x86.cache-2 b760a000-b760c000 r--s 00000000 08:01 1363022 /var/cache/fontconfig/de156ccd2eddbdc19d37a45b8b2aac9c-x86.cache-2 b760c000-b7612000 r--s 00000000 08:01 1363020 /var/cache/fontconfig/d52a8644073d54c13679302ca1180695-x86.cache-2 b7612000-b7616000 r--s 00000000 08:01 1363019 /var/cache/fontconfig/105b9c7e6f0a4f82d8c9b6e39c52c6f9-x86.cache-2 b7616000-b7627000 r--s 00000000 08:01 5179340 /home/jens/.fontconfig/cabbd14511b9e8a55e92af97fb3a0461-x86.cache-2 b7627000-b7629000 r--s 00000000 08:01 1363014 /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-x86.cache-2 b7629000-b7669000 r--s 00000000 08:01 1363013 /var/cache/fontconfig/eeebfc908bd29a90773fd860017aada4-x86.cache-2 b7669000-b76a9000 r--s 00000000 08:01 1363010 /var/cache/fontconfig/21a99156bb11811cef641abeda519a45-x86.cache-2 b76a9000-b76aa000 r--s 00000000 08:01 1347065 /var/cache/fontconfig/bf1f9632594a1fa28e2cf4d7888deffe-x86.cache-2 b76aa000-b76ad000 r--s 00000000 08:01 1363031 /var/cache/fontconfig/b21a91cee725896328b8cee8091cf747-x86.cache-2 b76ad000-b76ae000 r--s 00000000 08:01 1347863 /var/cache/fontconfig/059138ec877db160474b4d5de1248d14-x86.cache-2 b76ae000-b76af000 r--s 00000000 08:01 1347063 /var/cache/fontconfig/118d8d5311348bbdf5fe3b106d7c13d4-x86.cache-2 b76af000-b76b2000 r--s 00000000 08:01 1363029 /var/cache/fontconfig/8ab5f685cd6d8ba67c37c908faf08172-x86.cache-2 b76b2000-b76bb000 r-xp 00000000 08:01 5344796 /lib/libnss_files-2.5.so b76bb000-b76bd000 rw-p 00008000 08:01 5344796 /lib/libnss_files-2.5.so b76bd000-b76c5000 r-xp 00000000 08:01 5341625 /lib/libnss_nis-2.5.so b76c5000-b76c7000 rw-p 00007000 08:01 5341625 /lib/libnss_nis-2.5.so b76c7000-b76da000 r-xp 00000000 08:01 5341338 /lib/libnsl-2.5.so b76da000-b76dc000 rw-p 00012000 08:01 5341338 /lib/libnsl-2.5.so b76dc000-b76de000 rw-p b76dc000 00:00 0 b76df000-b76e0000 r--s 00000000 08:01 1347177 /var/cache/fontconfig/142ecfc435bad6f1fbc2648c1119d5eb-x86.cache-2 b76e0000-b76e6000 r--s 00000000 08:01 1363028 /var/cache/fontconfig/102e5142c2e9e50c5e8ece26694a2dad-x86.cache-2 b76e6000-b76e7000 r--s 00000000 08:01 1347059 /var/cache/fontconfig/92a571655fb1c0ec1c4d6f496220600a-x86.cache-2 b76e7000-b76ef000 r--s 00000000 08:01 1347864 /var/cache/fontconfig/a960c40fc9306f090224a04585f8a963-x86.cache-2 b76ef000-b76f0000 r--s 00000000 08:01 1363009 /var/cache/fontconfig/9404ff413c67fc2a1526fd14eb4163a8-x86.cache-2 b76f0000-b781c000 rw-s 00000000 00:08 298942480 /SYSV00000000 (deleted) b781c000-b7820000 r-xp 00000000 08:01 3834148 /usr/lib/libXfixes.so.3.1.0 b7820000-b7821000 rw-p 00003000 08:01 3834148 /usr/lib/libXfixes.so.3.1.0 b7821000-b7829000 r-xp 00000000 08:01 3834126 /usr/lib/libXcursor.so.1.0.2 b7829000-b782a000 rw-p 00007000 08:01 3834126 /usr/lib/libXcursor.so.1.0.2 b782a000-b782c000 r-xp 00000000 08:01 3833930 /usr/lib/libXrandr.so.2.0.0 b782c000-b782d000 rw-p 00002000 08:01 3833930 /usr/lib/libXrandr.so.2.0.0 b782d000-b7834000 r-xp 00000000 08:01 3839920 /usr/lib/libXrender.so.1.3.0 b7834000-b7835000 rw-p 00006000 08:01 3839920 /usr/lib/libXrender.so.1.3.0 b7835000-b7842000 r-xp 00000000 08:01 3834964 /usr/lib/libXext.so.6.4.0 b7842000-b7843000 rw-p 0000c000 08:01 3834964 /usr/lib/libXext.so.6.4.0 b7843000-b7847000 r-xp 00000000 08:01 3834946 /usr/lib/libXdmcp.so.6.0.0 b7847000-b7848000 rw-p 00003000 08:01 3834946 /usr/lib/libXdmcp.so.6.0.0 b7848000-b784a000 r-xp 00000000 08:01 3834944 /usr/lib/libXau.so.6.0.0 b784a000-b784b000 rw-p 00001000 08:01 3834944 /usr/lib/libXau.so.6.0.0 b784b000-b7933000 r-xp 00000000 08:01 3835850 /usr/lib/libX11.so.6.2.0 b7933000-b7937000 rw-p 000e8000 08:01 3835850 /usr/lib/libX11.so.6.2.0 b7937000-b7939000 rw-p b7937000 00:00 0 b7939000-b7957000 r-xp 00000000 08:01 3835862 /usr/lib/libexpat.so.1.0.0 b7957000-b7959000 rw-p 0001d000 08:01 3835862 /usr/lib/libexpat.so.1.0.0 b7959000-b7960000 r-xp 00000000 08:01 5341370 /lib/librt-2.5.so b7960000-b7962000 rw-p 00006000 08:01 5341370 /lib/librt-2.5.so b7962000-b7975000 r-xp 00000000 08:01 3835883 /usr/lib/libz.so.1.2.3 b7975000-b7976000 rw-p 00012000 08:01 3835883 /usr/lib/libz.so.1.2.3 b7976000-b79dd000 r-xp 00000000 08:01 3837177 /usr/lib/libfreetype.so.6.3.10 b79dd000-b79e0000 rw-p 00067000 08:01 3837177 /usr/lib/libfreetype.so.6.3.10 b79e0000-b7a03000 r-xp 00000000 08:01 3834339 /usr/lib/libfontconfig.so.1.2.0 b7a03000-b7a0b000 rw-p 00023000 08:01 3834339 /usr/lib/libfontconfig.so.1.2.0 b7a0b000-b7a0c000 rw-p b7a0b000 00:00 0 b7a0c000-b7a9d000 r-xp 00000000 08:01 3834661 /usr/lib/libglib-2.0.so.0.1200.4 b7a9d000-b7a9e000 rw-p 00091000 08:01 3834661 /usr/lib/libglib-2.0.so.0.1200.4 b7a9e000-b7aa0000 r-xp 00000000 08:01 3834737 /usr/lib/libgmodule-2.0.so.0.1200.4 b7aa0000-b7aa1000 rw-p 00002000 08:01 3834737 /usr/lib/libgmodule-2.0.so.0.1200.4 b7aa1000-b7ada000 r-xp 00000000 08:01 3834736 /usr/lib/libgobject-2.0.so.0.1200.4 b7ada000-b7adb000 rw-p 00039000 08:01 3834736 /usr/lib/libgobject-2.0.so.0.1200.4 b7adb000-b7b13000 r-xp 00000000 08:01 3835638 /usr/lib/libpango-1.0.so.0.1400.8 b7b13000-b7b15000 rw-p 00038000 08:01 3835638 /usr/lib/libpango-1.0.so.0.1400.8 b7b15000-b7b3f000 r-xp 00000000 08:01 5079504 /usr/lib/libpangoft2-1.0.so.0.1400.8 b7b3f000-b7b40000 rw-p 00029000 08:01 5079504 /usr/lib/libpangoft2-1.0.so.0.1400.8 b7b40000-b7b41000 rw-p b7b40000 00:00 0 b7b41000-b7b54000 r-xp 00000000 08:01 5344787 /lib/libpthread-2.5.so b7b54000-b7b56000 rw-p 00012000 08:01 5344787 /lib/libpthread-2.5.so b7b56000-b7b58000 rw-p b7b56000 00:00 0 b7b58000-b7ba8000 r-xp 00000000 08:01 3845607 /usr/lib/libvga.so.1.4.3 b7ba8000-b7baf000 rw-p 00050000 08:01 3845607 /usr/lib/libvga.so.1.4.3 b7baf000-b7bb8000 rw-p b7baf000 00:00 0 b7bb8000-b7bc6000 r-xp 00000000 08:01 3845557 /usr/lib/libdirect-0.9.so.25.0.0 b7bc6000-b7bc7000 rw-p 0000d000 08:01 3845557 /usr/lib/libdirect-0.9.so.25.0.0 b7bc7000-b7bcc000 r-xp 00000000 08:01 3845558 /usr/lib/libfusion-0.9.so.25.0.0 b7bcc000-b7bcd000 rw-p 00004000 08:01 3845558 /usr/lib/libfusion-0.9.so.25.0.0 b7bcd000-b7c22000 r-xp 00000000 08:01 3845559 /usr/lib/libdirectfb-0.9.so.25.0.0 b7c22000-b7c24000 rw-p 00054000 08:01 3845559 /usr/lib/libdirectfb-0.9.so.25.0.0 b7c24000-b7c25000 rw-p b7c24000 00:00 0 b7c25000-b7c27000 r-xp 00000000 08:01 5341344 /lib/libdl-2.5.so b7c27000-b7c29000 rw-p 00001000 08:01 5341344 /lib/libdl-2.5.so b7c29000-b7c4e000 r-xp 00000000 08:01 5341340 /lib/libm-2.5.so b7c4e000-b7c50000 rw-p 00024000 08:01 5341340 /lib/libm-2.5.so b7c50000-b7d0c000 r-xp 00000000 08:01 3834141 /usr/lib/libasound.so.2.0.0 b7d0c000-b7d11000 rw-p 000bb000 08:01 3834141 /usr/lib/libasound.so.2.0.0 b7d11000-b7e4e000 r-xp 00000000 08:01 5341345 /lib/libc-2.5.so b7e4e000-b7e4f000 r--p 0013d000 08:01 5341345 /lib/libc-2.5.so b7e4f000-b7e51000 rw-p 0013e000 08:01 5341345 /lib/libc-2.5.so b7e51000-b7e54000 rw-p b7e51000 00:00 0 b7e54000-b7e57000 r-xp 00000000 08:01 3845856 /usr/lib/libSDL_Pango.so.1.1.0 b7e57000-b7e58000 rw-p 00002000 08:01 3845856 /usr/lib/libSDL_Pango.so.1.1.0 b7e58000-b7ebf000 r-xp 00000000 08:01 3834144 /usr/lib/libSDL-1.2.so.0.11.0 b7ebf000-b7ec1000 rw-p 00067000 08:01 3834144 /usr/lib/libSDL-1.2.so.0.11.0 b7ec1000-b7f0a000 rw-p b7ec1000 00:00 0 b7f0a000-b7f0c000 r--s 00000000 08:01 1347057 /var/cache/fontconfig/b3fedf7c409f006ca1a6fceffceb77cf-x86.cache-2 b7f0c000-b7f13000 r-xp 00000000 08:01 5341346 /lib/libnss_compat-2.5.so b7f13000-b7f15000 rw-p 00006000 08:01 5341346 /lib/libnss_compat-2.5.so b7f15000-b7f1c000 r--s 00000000 08:01 3833935 /usr/lib/gconv/gconv-modules.cache b7f1c000-b7f1d000 rw-p b7f1c000 00:00 0 b7f1d000-b7f1e000 r-xp b7f1d000 00:00 0 [vdso] b7f1e000-b7f39000 r-xp 00000000 08:01 5341335 /lib/ld-2.5.so b7f39000-b7f3b000 rw-p 0001b000 08:01 5341335 /lib/ld-2.5.so bfcc7000-bfcdd000 rw-p bfcc7000 00:00 0 [stack] Abgebrochen Jens -- System Information: Debian Release: 4.0 APT prefers stable APT policy: (500, 'stable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18-4-686 Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Versions of packages libsdl-pango1 depends on: ii libc6 2.5-7 GNU C Library: Shared libraries ii libglib2.0-0 2.12.4-2 The GLib library of C routines ii libpango1.0-0 1.14.8-5 Layout and rendering of internatio ii libsdl1.2debian 1.2.11-8 Simple DirectMedia Layer libsdl-pango1 recommends no packages. -- no debconf information
/* Based on testbench.c from SDL Pango source, compile with * gcc testbench.c -I /usr/include/SDL/ -l SDL -l SDL_Pango -o testbench */ #include "SDL_Pango.h" SDLPango_Context *context; char *text; int main(int argc, char *argv[]) { SDL_Surface *framebuf; SDL_Surface *surface; SDL_Init(SDL_INIT_VIDEO); SDLPango_Init(); framebuf = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE | SDL_RESIZABLE); context = SDLPango_CreateContext(); SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_WHITE_LETTER); SDLPango_SetMinimumSize(context, 5, 0); // crashs //SDLPango_SetMinimumSize(context, 150, 0); // does not crash text = "This_text_is_long"; SDLPango_SetText_GivenAlignment(context, text, -1, SDLPANGO_ALIGN_CENTER); //SDLPango_SetText(context, text, -1); // this works surface = SDLPango_CreateSurfaceDraw(context); SDL_FreeSurface(surface); SDLPango_FreeContext(context); SDL_Quit(); return 0; }