Como reportar un "Bug" de Asterisk

Seguramente la estabilidad de Asterisk y de sus funcionalidades depende también de los reportes de los usuarios que lo utilizan. Sin estos aportes sería mucho más complicado y “costoso” para los desarrolladores darse cuenta si la ultima versión de Asterisk liberada tiene algún error de programación.

En este articulo veremos como reportar un bug que hemos encontrado. La parte más complicada de todo el asunto es tener la certeza que el problema que hemos encontrado es efectivamente un error de programación.

Para validar un error, se deberían seguir estas reglas:

  • trabajar con una versión de Asterisk que todavía tiene soporte; por ejemplo la rama 1.6.X ya no está soportada.
  • trabajar con la ultima versión de Asterisk de la rama que se está utilizando
  • asegurarse que el error no se debe al servidor en que está instalado Asterisk (ej: servidores virtualizados)
  • reproducibilidad del error en distintos servidores con la misma versión de Asterisk
  • instalar una versión anterior donde creemos que ese error no estaba presente

Una vez que tenemos la casi certeza que se trata de un error, hay que averiguar si ese bug ya ha sido reportado; si así no fuera, mano a la obra Sorriso

Lo primero es asegurarse que Asterisk esté corriendo con la opción -g (en negrita):

ps -C asterisk u

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2019  0.2  4.1  55456 21212 ?        Sl   Sep19  29:37 /usr/sbin/asterisk -f -vvvg -c

Si así es, para generar un mejor reporte hay que activar dos parámetros:

  • DONT_OPTIMIZE
  • BETTER_BACKTRACE

La activación de estos dos parámetros, a lo largo de la compilación de Asterisk, no afecta las prestaciones de la PBX. Para poder activar el segundo hay que instalar el paquete que sigue:

yum install binutils-devel

Entramos en la carpeta de las fuentes de Asterisk:

cd /usr/src/asterisk-1.8.23.1

Limpiamos la compilación anterior:

make clean

make distclean

Ejecutamos el configure y el make menuselect:

./configure
make menuselect

En la ventana de las opciones de compilación, vamos al menú “Compiler flags” y seleccionamos los dos parámetros indicados anteriormente:

Captura

Salimos del Menú y compilamos:

make

make install

make config

Volvemos a iniciar Asterisk:

service asterisk start

y ejecutamos nuevamente la operación que manda en crash la PBX. En la carpeta /tmp se generará un archivo que inicia con el prefijo core y a seguir otras letras/números. En este ejemplo supongamos que el nombre del archivo es core-1234.

Instalamos el programa para el debugger del archivo creado:

yum install gdb

Luego ejecutamos el siguiente comando:

gdb -se "asterisk" -ex "bt full" -ex "thread apply all bt" --batch -c core-1234 > /tmp/backtrace.txt

De esta forma el resultado del análisis se guardará en el archivo de texto backtrace.txt, que luego añadiremos a nuestro reporte.

Luego cargamos el core generado a GDB:

gdb -se "asterisk" -c core | tee /tmp/backtrace.txt

y recolectamos toda la información con los siguientes comandos:

(gdb) bt

(gdb) bt full

(gdb) thread apply all bt

Salimos del programa:

(gdb) quit

Ya estamos listos para crear nuestro reporte. Creamos una cuenta para poder abrir un reporte:

https://signup.asterisk.org/signup/?F17376047850GCXPDK=_

Una vez la tengamos, accedemos a la pagina de los reportes de Asterisk, nos autenticamos y creamos nuestro primer reporte:

Captura

Rellenamos todos los campus requeridos y al final de la pagina presionamos el botón “Create”. Volvemos a entrar en el reporte creado y añadimos el archivo de texto backtrace.txt creado con GDB.

Luego solo falta esperar. Referencia:

https://wiki.asterisk.org/wiki/display/AST/Getting+a+Backtrace

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Como reportar un "Bug" de Asterisk" Suscribirse a VozToVoice - Todos los comentarios