turco
10/01/2010, 15:10
Hola a todos,
estoy haciendo un pequeño programa en C y SDL y tengo un error que me tiene desconcertado. El mismo programa unas veces se ejecuta bien y otras me peta y saca esta traza:
Comienzo del programa
*** glibc detected *** ./MicroPaint.sh: double free or corruption (out): 0x08089458 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7e39a85]
/lib/tls/i686/cmov/libc.so.6(cfree+0x90)[0xb7e3d4f0]
/usr/lib/libX11.so.6(XkbFreeClientMap+0xe4)[0xb79d87e4]
/usr/lib/libX11.so.6(XkbFreeKeyboard+0x123)[0xb79dd6b3]
/usr/lib/libX11.so.6[0xb79d1143]
/usr/lib/libX11.so.6(_XFreeDisplayStructure+0x11f)[0xb7967c7f]
/usr/lib/libX11.so.6(XCloseDisplay+0xf6)[0xb7954fc6]
/usr/lib/libSDL-1.2.so.0[0xb7f58d2e]
/usr/lib/libSDL-1.2.so.0[0xb7f62bb1]
/usr/lib/libSDL-1.2.so.0(SDL_VideoQuit+0x50)[0xb7f4de70]
/usr/lib/libSDL-1.2.so.0(SDL_QuitSubSystem+0x64)[0xb7f23424]
/usr/lib/libSDL-1.2.so.0(SDL_Quit+0x1e)[0xb7f2349e]
./MicroPaint.sh[0x8049a3f]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7de4450]
./MicroPaint.sh[0x80487b1]
======= Memory map: ========
08048000-0804a000 r-xp 00000000 08:03 360823 /home/angel/programacion/sdl/MicroPaint/MicroPaint.sh
0804a000-0804b000 rw-p 00001000 08:03 360823 /home/angel/programacion/sdl/MicroPaint/MicroPaint.sh
0804b000-0808d000 rw-p 0804b000 00:00 0 [heap]
b6e19000-b6e23000 r-xp 00000000 08:02 82054 /lib/libgcc_s.so.1
b6e23000-b6e24000 rw-p 0000a000 08:02 82054 /lib/libgcc_s.so.1
b6e6f000-b6e70000 ---p b6e6f000 00:00 0
b6e70000-b7670000 rw-p b6e70000 00:00 0
[.................................................. .....]
b7f17000-b7f18000 r--p 00149000 08:02Cancelado
Bueno pues a ver si alguien sabe a qué se debe. Porque yo entiendo que pueda hacer algo relacionado con las direcciones de memoria, pero no entiendo porqué hay veces que falla y otras que no. Ahora mismo incluso tengo comentado el bucle principal de ejecución del programa, de forma que en todas la ejecuciones se ejecutan las mismas instrucciones.
Saludos.
estoy haciendo un pequeño programa en C y SDL y tengo un error que me tiene desconcertado. El mismo programa unas veces se ejecuta bien y otras me peta y saca esta traza:
Comienzo del programa
*** glibc detected *** ./MicroPaint.sh: double free or corruption (out): 0x08089458 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7e39a85]
/lib/tls/i686/cmov/libc.so.6(cfree+0x90)[0xb7e3d4f0]
/usr/lib/libX11.so.6(XkbFreeClientMap+0xe4)[0xb79d87e4]
/usr/lib/libX11.so.6(XkbFreeKeyboard+0x123)[0xb79dd6b3]
/usr/lib/libX11.so.6[0xb79d1143]
/usr/lib/libX11.so.6(_XFreeDisplayStructure+0x11f)[0xb7967c7f]
/usr/lib/libX11.so.6(XCloseDisplay+0xf6)[0xb7954fc6]
/usr/lib/libSDL-1.2.so.0[0xb7f58d2e]
/usr/lib/libSDL-1.2.so.0[0xb7f62bb1]
/usr/lib/libSDL-1.2.so.0(SDL_VideoQuit+0x50)[0xb7f4de70]
/usr/lib/libSDL-1.2.so.0(SDL_QuitSubSystem+0x64)[0xb7f23424]
/usr/lib/libSDL-1.2.so.0(SDL_Quit+0x1e)[0xb7f2349e]
./MicroPaint.sh[0x8049a3f]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7de4450]
./MicroPaint.sh[0x80487b1]
======= Memory map: ========
08048000-0804a000 r-xp 00000000 08:03 360823 /home/angel/programacion/sdl/MicroPaint/MicroPaint.sh
0804a000-0804b000 rw-p 00001000 08:03 360823 /home/angel/programacion/sdl/MicroPaint/MicroPaint.sh
0804b000-0808d000 rw-p 0804b000 00:00 0 [heap]
b6e19000-b6e23000 r-xp 00000000 08:02 82054 /lib/libgcc_s.so.1
b6e23000-b6e24000 rw-p 0000a000 08:02 82054 /lib/libgcc_s.so.1
b6e6f000-b6e70000 ---p b6e6f000 00:00 0
b6e70000-b7670000 rw-p b6e70000 00:00 0
[.................................................. .....]
b7f17000-b7f18000 r--p 00149000 08:02Cancelado
Bueno pues a ver si alguien sabe a qué se debe. Porque yo entiendo que pueda hacer algo relacionado con las direcciones de memoria, pero no entiendo porqué hay veces que falla y otras que no. Ahora mismo incluso tengo comentado el bucle principal de ejecución del programa, de forma que en todas la ejecuciones se ejecutan las mismas instrucciones.
Saludos.