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