malloc zpusobuje SIGSEGV

Ladislav Michl Ladislav.Michl na seznam.cz
Úterý Březen 28 17:57:31 CEST 2000


Dobry den,

chtel jsem se neco naucit o SDL knihovnach. Na pokusy jsem si vybral
sdldoom, protoze o kodu dooma uz neco vim ;). Narazil jsem na takovou
zvlastni vec. Jakekoliv volani malloc nekde v programu, zpusobi jeho
ukonceni vyse uvedenym signalem. SDL je verze 1.0.8 z Debianiho baliku.
Toto je vypis gdb:
$ gdb doom
GNU gdb 19990928
[snip]
(gdb) b IdentifyVersion
Breakpoint 1 at 0x804cde4: file d_main.c, line 579.
(gdb) run
Starting program: /home/ladinek/src/sdldoom-1.10/doom

Breakpoint 1, IdentifyVersion () at d_main.c:579
579         if (!doomwaddir)
(gdb) n
580             doomwaddir = ".";
(gdb) n
583         doom2wad = malloc(strlen(doomwaddir)+1+9+1);
(gdb) n

Program received signal SIGSEGV, Segmentation fault.
0x8be58955 in ?? ()
(gdb) bt
#0  0x8be58955 in ?? ()
#1  0x400f29dc in _IO_file_xsputn () from /lib/libc.so.6
#2  0x400f2faa in malloc () from /lib/libc.so.6
#3  0x804ce0a in IdentifyVersion () at d_main.c:583
#4  0x804d3fe in D_DoomMain () at d_main.c:802
#5  0x8052eb8 in main (argc=1, argv=0xbffffb94) at i_main.c:43
(gdb)

IdentifyVersion je prvni volana funkce, ktera se pokousi o malloc.
S programy nepouzivajicimi SDL (?samozrejme?) zadny problem neni.
Muze nekdo poradit co s tim ?

Dík Laďa.



Další informace o konferenci Linux