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;
}

Reply via email to