draconisPW / PWMAngband

A free, multi-player roguelike dungeon exploration game based on Angband
35 stars 12 forks source link

sdl client ttf font bug #630

Closed s88100 closed 4 months ago

s88100 commented 4 months ago

if select 'ttf', 'woff' font and close the client, then the client doesn't open

./pwmangclient
unusable font file, QW?`, from pref file; using the default font
malloc_consolidate(): unaligned fastbin chunk detected
gdb ./pwmangclient

Program received signal SIGABRT, Aborted.

(gdb) bt
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0)
    at ./nptl/pthread_kill.c:44
#1  0x00007ffff7d38e8f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  0x00007ffff7ce9fb2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007ffff7cd4472 in __GI_abort () at ./stdlib/abort.c:79
#4  0x00007ffff7d2d430 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7e47459 "%s\n")
    at ../sysdeps/posix/libc_fatal.c:155
#5  0x00007ffff7d427aa in malloc_printerr
    (str=str@entry=0x7ffff7e49f60 "malloc_consolidate(): unaligned fastbin chunk detected") at ./malloc/malloc.c:5660
#6  0x00007ffff7d4320c in malloc_consolidate (av=av@entry=0x7ffff7e80c60 <main_arena>) at ./malloc/malloc.c:4746
#7  0x00007ffff7d45818 in _int_malloc (av=av@entry=0x7ffff7e80c60 <main_arena>, bytes=bytes@entry=4096)
    at ./malloc/malloc.c:3961
#8  0x00007ffff7d469fa in __GI___libc_malloc (bytes=bytes@entry=4096) at ./malloc/malloc.c:3315
#9  0x00007ffff7d238cc in __GI__IO_file_doallocate (fp=0x555555784920) at ./libio/filedoalloc.c:101
#10 0x00007ffff7d310b0 in __GI__IO_doallocbuf (fp=0x555555784920) at ./libio/libioP.h:947
#11 __GI__IO_doallocbuf (fp=fp@entry=0x555555784920) at ./libio/genops.c:342
#12 0x00007ffff7d2ecec in _IO_new_file_seekoff (fp=0x555555784920, offset=0, dir=1, mode=<optimized out>)
    at ./libio/fileops.c:937
#13 0x00007ffff7d2bc63 in __GI_fseek (fp=0x555555784920, offset=0, whence=1) at ./libio/fseek.c:36
#14 0x00007ffff7f203f0 in  () at /lib/x86_64-linux-gnu/libSDL-1.2.so.0
#15 0x00007ffff7ee6190 in TTF_OpenFontIndexRW () at /lib/x86_64-linux-gnu/libSDL_ttf-2.0.so.0
#16 0x00005555555bddff in sdl_CheckFont (req_font=0x555555704490 <windows+1072>, width=0x7fffffffdd2c, height=0x7fffffffdd28)
    at client/main-sdl.c:582
#17 0x00005555555c7e09 in load_window_prefs () at client/main-sdl.c:4530
#18 0x00005555555cbea2 in init_sdl () at client/main-sdl.c:6444
#19 0x00005555555bd954 in main (argc=1, argv=0x7fffffffdfd8) at client/main.c:154

https://github.com/draconisPW/PWMAngband/blob/c5501ffdc4df87df5756547d57d2631b91f69fab/src/client/main-sdl.c#L4530

draconisPW commented 4 months ago

Reproducing the bug even on Windows. There is a misaffectation of win->req_font.name instead of win->req_font.alloc_name in load_window_prefs() leading to double-free memory corruption on win->req_font.alloc_name.

draconisPW commented 4 months ago

Fixed in commit abdc694.