SIGSEGV po malloc

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pátek Červenec 14 09:14:15 CEST 2000


On Mon, 10 Jul 2000, Ladislav Michl wrote:

Hele...zas jeden mail, na ktery jsem chtel odpovedet a zapomnel jsem na
to. :)

> Program received signal SIGSEGV, Segmentation fault.
> 0x8be58955 in ?? ()
> (gdb) bt
> #0  0x8be58955 in ?? ()
> #1  0x400e39dc in _IO_file_xsputn () from /lib/libc.so.6
> #2  0x400e3faa in malloc () from /lib/libc.so.6
> (gdb)
> 
> myslím, že to souvisí s nějakou callback funkcí, kterou SDL registruje
> 
> 0x400e3f5b <_IO_file_xsputn+3175>: push   %eax
> 0x400e3f5c <_IO_file_xsputn+3176>: call   0x400ac594 <SDL_alarm_callback+96652>

To urcite nebude funkce SDL_alarm_callback, vsimnete si toho offsetu.
A nejspis to ani nesouvisi s _IO_file_xsputn (ze stejneho duvodu).
A jak jste vubec prisel na adresu 0x400e3f5b? (V backtrace takova ani
podobna neni?!.)

> může mi někdo poradit, jak se takové věci ladí? stačil by nějaký odkaz nebo
> větší nakopnutí. teď mám jen dial-up a trávit hodiny hledáním na netu mi
> nepřijde jako dobrý nápad :-|

Jak se to ladi? Blbe. Z backtrace lze usoudit, ze malloc (v nejake sve
interni podprocedure), skocil na nejakou na nejakou nesmyslnou adresu.
Matne si vzpominam, ze je mozno zaregistrovat nejake callbacky. Je mozne,
ze SDL ten callback nejak posaha -- v tom pripade bych zkusil na adresu
toho, co je posahane, dat watchpoint.

V kazdem pripade neni od veci mit po ruce zdrojaky od glibc i od
SDL. Clovek nemusi ten kod mit zrovna prelozeny s ladicimi informacemi,
ale ten assembler se mnohem lepe lusti, kdyz je znamo, co vlastne ma
delat. :)

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux