¿Qué sucede después de que `ubuntu-bug` ha hecho lo suyo?

14

Hasta hace algún tiempo corriste apport-bugo ubuntu-bugpara comenzar a reportar un error. Luego, el sistema abriría la plataforma de lanzamiento con su cuenta, cargaría la información recopilada y le permitiría agregar más información al informe de error.

Ahora cuando ejecuto gksudo ubuntu-bug(por ejemplo, con un crasharchivo como argumento) aparece el cuadro de diálogo de error común

ingrese la descripción de la imagen aquí

y eso es todo.

¿A dónde se envía el informe? Definitivamente no para lanzar la plataforma como un informe de error (aunque en la situación concreta las personas han podido presentar un informe sobre ese error).

Entonces: ¿dónde se envía este informe (y tal vez) cómo puedo presentar un informe de error de mi sistema (hace que la carga de los archivos correspondientes sea mucho más fácil)

¿Podría ser que "el sistema" decidió que esto sería un duplicado de un error ya existente?

Guntbert
fuente

Respuestas:

7

Técnicamente, ubuntu-bugsolo registra el informe de bloqueo localmente. Un programa separado whoopsievigila los informes registrados y los carga en una base de datos central, donde se agrupan automáticamente para identificar problemas generales.

Los datos resultantes se muestran en el rastreador de errores de Ubuntu :

Gráfico de informes de errores en Ubuntu

Las tendencias agregadas están disponibles públicamente, y los detalles del informe están disponibles para desarrolladores confiables. Más detalles están disponibles en Ubuntu Wiki .

De forma predeterminada, ubuntu-bugno abre errores en Launchpad para informes de fallas en versiones estables, pero puede configurarlo si lo desea. Después de realizar ese cambio, puede abrir un error para un informe de bloqueo existente ejecutando ubuntu-bug /var/crash/foo.crash.

ændrük
fuente
3

La información recopilada o el informe se carga en un sistema de seguimiento de errores.

Si algún proceso en el sistema muere debido a una señal que se conoce comúnmente como 'bloqueo' (violación de segmentación, error de bus, excepción de coma flotante, etc.), o por ejemplo, una aplicación Python empaquetada genera una excepción no detectada, el backend de apport se invoca automáticamente

Produce un informe de bloqueo inicial en un archivo en / var / crash / (el nombre del archivo se compone del nombre del ejecutable bloqueado y la identificación del usuario). Si el proceso bloqueado pertenece al usuario que está conectado actualmente, o pertenece a un proceso del sistema y el usuario es un administrador, un informe informa al usuario sobre el bloqueo y le ofrece informar el problema.

Si el usuario deja activada la casilla de verificación "Enviar informe de error", Apport carga la información recopilada en el sistema de seguimiento de errores. Después de eso, abre la página de presentación de errores de los paquetes con un título de error predeterminado sensible y deja el resto del proceso de presentación de errores a la interfaz de usuario web.

Ubuntu recibe una cantidad increíblemente grande de informes de errores todos los días a través de nuestro sistema de seguimiento de errores. Cada uno de estos debe leerse, evaluarse y clasificarse para que pueda repararse. Aquí es donde podríamos usar su ayuda para ayudar con errores. Para obtener una representación visual del proceso de clasificación de errores, consulte estos agradables diagramas de flujo.

Cada informe de error es una conversación con el reportero. El primer contacto que cualquier reportero suele tener con la comunidad de Ubuntu es a través de un analizador de errores, que intenta armar un informe completo de errores. Es muy importante que demos una buena impresión, así que sea amable y trate de usar su mejor inglés.

Trabajar en errores simples y no procesados ​​es una buena manera de comenzar y familiarizarse con el procedimiento de evaluación, ya que tendrá que lidiar con todos los aspectos del ciclo de vida de un error. La sección Errores no procesados ​​explica dónde encontrarlos.

Tipos de errores

Apport informes

Los informes de Apport son errores reportados a través del programa de informe de errores automatizado Apport. Informar sobre errores utilizando Apport es la forma preferida de informar sobre un error, ya que proporciona a los desarrolladores mucha información sobre el sistema afectado. Cuando se utiliza Apport, se requiere menos información adicional, lo que acelera todo el proceso.

Puede reconocer estos errores por la lista agregada de información del sistema en su descripción. Algunos programas tienen ganchos para Apport, que agregan más información al informar un error. Esta información generalmente se puede encontrar en los archivos adjuntos.

Errores confirmados

Cuando un error se marca como 'Confirmado', aún no se ha solucionado por completo. Este error está muy cerca de ser marcado como 'Triaged', pero debe asegurarse de que esté listo para que los desarrolladores lo solucionen.

Peticiones de características

Si el informe de error es en realidad una solicitud de función, hay dos posibilidades. Si la mejora solicitada es pequeña y está bien definida y / o la sugerencia se refiere a un proyecto anterior, la importancia del error debe establecerse en 'Lista de deseos'. Cuando se completa el informe, el estado debe establecerse en 'Triaged'.

Solo los miembros del equipo de Ubuntu Bug Control pueden hacerlo. Si no eres miembro, tendrás que pedirle a alguien que lo haga por ti. Pegue el número de error en # ubuntu-bugs y diga que cree que el error debe establecerse en 'Lista de deseos'. Alguien lo notará y lo configurará para usted, aunque no necesariamente de inmediato.

¿Cómo funciona internamente?

Intercepción de choque

Apport usa / proc / sys / kernel / core_pattern para canalizar directamente el volcado del núcleo en apport:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c
$ 

Nota: incluso si ulimit se configura en archivos centrales deshabilitados (especificando un tamaño de archivo central de cero usando ulimit -c 0), apport aún capturará el bloqueo. Para interceptar bloqueos de Python, se instala una /etc/python*/sitecustomize.pyllamada a apport en excepciones no controladas.

Ejemplo

Apport incluso puede capturar archivos principales si muere PID 1 (Upstart):

  1. Si Upstart detecta una inconsistencia interna, eleva la señal SIGABRT.
  2. El controlador de bloqueo Upstart se llama en SIGABRT.
  3. El controlador de bloqueos inicial inicia un proceso secundario
  4. El proceso de niño advenedizo vuelve a generar la señal que hace que el niño salga de manera anormal.
  5. El kernel detecta que el proceso hijo se ha salido anormalmente y llama a apport, canalizando el archivo central para admitir la entrada estándar (debido a / proc / sys / kernel / core_pattern).
  6. apport escribe el archivo central en el disco en / var / crash /.
  7. El PID 1 espera a que su hijo termine (lo que ocurre una vez que apport ha terminado de escribir el archivo principal).
  8. PID 1 sale.
  9. kernel panics.
  10. En el próximo arranque, Whoopsie detectará el archivo de bloqueo y lo procesará.

Backend

Para mantener el retraso y el impacto de CPU / IO lo más bajo posible, /usr/share/apport/apportsolo recopila datos que deben adquirirse mientras el proceso bloqueado todavía existe: información de /proc/pid, el volcado del núcleo, la ruta ejecutable y el número de señal. El informe está escrito para /var/crash/executable_path.uid.crash.

Invocación frontend

En Gnome, el notificador de actualizaciones mantiene una vigilancia inotify activada /var/crash. Cada vez que hay algo nuevo, llama a / usr / share / apport / apport-checkreports. Si hay nuevos informes, llama a / usr / share / apport / apport-gtk, que es la interfaz que se muestra en las capturas de pantalla anteriores.

Luego, la interfaz recopila información adicional, como versiones de paquetes, sumas de comprobación de archivos de paquetes o versiones de SO, y llama a todos los enlaces de paquetes coincidentes. Para deshabilitar esto, puede ejecutar gsettings set com.ubuntu.update-notifier show-apport-crashes false (como su usuario de escritorio normal).

Auto-retracer basado en Launchpad

El centro de datos Canonical ejecuta un servicio que rastrea automáticamente los errores con un informe. Al etiquetar los errores de acuerdo con la arquitectura en Launchpad, se realizará un retroceso y se eliminará la etiqueta. Las etiquetas que se utilizan son need-i386-retrace o need-amd64-retrace. Ver el anuncio.

Ganchos de sujeción por paquete

Es posible que los paquetes especifiquen información recopilada del sistema e incluida en el informe de error. Estos se realizan mediante ganchos de soporte contenidos en paquetes. Para algunos ejemplos útiles ver:

  • source_xorg.py: agrega archivos de registro adicionales y detalles de hardware a los informes de errores
  • usplash: ignora los bloqueos en rutas de código específicas
  • source_totem.py: hace preguntas al reportero y recopila información diferente según las respuestas

en / usr / share / apport / package-hooks. También hay una lista de paquetes que proporcionan ganchos de soporte.

Si se envía un informe de bloqueo o error a través de apport, los ganchos relevantes se ejecutarán automáticamente. Si tiene un error ya informado que se archivó sin un informe, y está interesado en la información de esos ganchos, puede pedirle al informador de errores que use el número de error apport-collect.

¡Usa la fuente, Luke!

  • Puede descargar el tarball ascendente desde la página del proyecto Launchpad, o el tarball fuente de Ubuntu desde el archivo de Ubuntu.
  • apport se desarrolla con el bazar RCS en Launchpad. Si desea contribuir o desarrollar su propio sistema basado en él, puede obtener su propia rama con bzr get lp: apport for trunk o debcheckout -a apport para la rama de empaquetado de Ubuntu.

Planes futuros

Diversas mejoras en el rendimiento, mejores herramientas para trabajar con informes e integración de más idiomas (trazas de pila Mono / Python, mensajes de afirmación, etc.) Consulte la especificación relevante.

Fuentes: Apport , Cómo clasificar y Cómo habilitar Apport

Mitch
fuente
Este es el proceso al que estoy acostumbrado, pero ahora parece que la última oración ya no se aplica, no se abre la interfaz de usuario web. Modifiqué mi pregunta con una idea que me respondieron.
guntbert
Creo que la interfaz de usuario web no es local (no en el lado del usuario), sino en línea, pero no estoy seguro.
Mitch
Esta fuente se actualizó por última vez en noviembre de 2012. La información podría estar desactualizada ..
guntbert
Vi eso, pero creo que dado que nada ha cambiado, no hubo necesidad de actualizar, supongo. Ahora tal vez cuando salga 13.10, habrá cambios ya que será de múltiples dispositivos. El último Apport es 2.61 , con fecha del 10 de octubre de 2012.
Mitch