1. Cosas que aprendi ayer: GDB + Python

    Ayer me encontraba ‘jugando’ con un servidor casero que arme hace algunas semanas y decidí ahora si, jugar de verdad por lo que le instale balazar3 el cual cual se instalo sin problemas y sin llorar.

    La bronca vino después cuando inicie el juego y toma … Error de segmentación. Ni siquiera llego a cargar el menu y se me hizo raro, ya que en otra maquina había funcionado sin broncas. Así que cual curioso con vacaciones me inicie en la búsqueda de que carajos pasa aquí, de entrada es un SIGSEGV cosa poco frecuente con python, lenguaje con el que esta escrito balazar3.

    Asi empezo el duelo con los debuggers; winpdb, pydb, etc. los cuales perdían la coneccion con el script. Ya andaba un poco molesto de que se quedaran a medias asi que hasta considere que se debia a una diferencia de los modulos necesarios por lo que comproble las diferencias entre ambos mediante:

    $ pydoc modules

    y grepie algunas de los módulos para comprobar que se satisfacían mediante

    $ more *py | grep import | sed s/”import\ \|from\ “//

    Y se cumplían todos =/. Ya después de un rato encontré(google always helps) como armar el stack trace con gdb. Primero instalar simbolos de debugging del python mediante:

    # apt-get install python2.6-dbg

    Luego iniciar el gdb con los simbolos de esta version del interprete:

    $ gdb python2.6

    Despues llamar al programar utilizando run y luego el backtrace con full

    (gdb) run /usr/games/balazar3 —3d

    (gdb) bt full

    Y detectar a zoquete que anda causando el error de segmentación, en este caso (i386) es causado por glGetString () at glapi_x86.S:428 del source mesa.

    Una vez encontrado, reportado a su respectivo mantenedor de libgl1-mesa-glx.

    Nota: Una vez que salio que biblioteca era(/usr/lib/i386-linux-gnu/libGL.so.1), instale los símbolos de debugging.

    7 months ago  /  Notes