O que acontece depois do 'ubuntu-bug' ter feito o seu trabalho?

13

Até há algum tempo, você executou apport-bug ou ubuntu-bug para começar a relatar um erro. O sistema então abrirá a barra de lançamento com sua conta, carregará as informações coletadas e permitirá que você adicione mais informações ao relatório de erros.

Agora, quando executo gksudo ubuntu-bug (por exemplo, com um crash -file como argumento), aparece a caixa de diálogo de bugs comum

e isso é tudo.

Para onde o relatório está sendo enviado? Definitivamente, não lançar como um relatório de bug (embora na situação concreta as pessoas tenham sido capazes de enviar um relatório sobre esse bug).

Então: onde este relatório é enviado (e talvez apenas) como ainda posso enviar um relatório de erros do meu sistema (facilita muito o upload dos arquivos relacionados)

Poderia ser que "o sistema" decidiu que isso seria uma duplicata de um bug já existente?

    
por user1721265 24.06.2013 / 22:12

2 respostas

7

Tecnicamente, ubuntu-bug registra o relatório de falha localmente. Um programa separado, whoopsie , assiste a relatórios registrados e os envia para um banco de dados central, onde eles são automaticamente agrupados para identificar problemas gerais.

Os dados resultantes são exibidos no rastreador de erros do Ubuntu :

As tendências agregadas estão disponíveis publicamente e os detalhes do relatório estão disponíveis para desenvolvedores confiáveis. Mais detalhes estão disponíveis no no Wiki do Ubuntu .

Por padrão, ubuntu-bug não abre bugs no Launchpad para relatórios de falhas em versões estáveis, mas você pode configurá-lo para se você quiser. Depois de fazer essa alteração, você pode abrir um bug para um relatório de falha existente executando ubuntu-bug /var/crash/foo.crash .

    
por ændrük 01.07.2013 / 10:24
3

As informações ou relatórios coletados são enviados para um sistema de acompanhamento de bugs.

  

Se algum processo no sistema for interrompido devido a um sinal comumente   referido como 'crash' (violação de segmentação, erro de bus, flutuação   ponto de exceção, etc.), ou e. g. um aplicativo em Python empacotado gera   uma exceção não identificada, o backend apport é automaticamente chamado.

     

Produz um relatório de falha inicial em um arquivo em / var / crash / (o arquivo   nome é composto pelo nome do executável com falha e pelo usuário   identidade). Se o processo travado pertencer ao usuário que está atualmente   logado, ou pertence a um processo do sistema e o usuário é um   administrador, apport informa o usuário sobre o acidente e se oferece para   relatar o problema.

     

Se o usuário deixar a caixa de seleção "Enviar relatório de erros" ativada,   carrega as informações coletadas no sistema de rastreamento de bugs. Depois   que abre a página de arquivamento de erros dos pacotes com um padrão sensível   título do bug e deixa o resto do processo de arquivamento do bug na interface do usuário da web.

O Ubuntu recebe um número incrivelmente grande de relatórios de erros todos os dias através do nosso sistema de rastreamento de bugs. Cada um deles precisa ser lido, avaliado e classificado para que possa ser corrigido. É aqui que podemos usar sua ajuda para ajudar com bugs. Para uma representação visual do processo de triagem de erros, veja estes gráficos de fluxo agradáveis.

Todo relatório de bug é uma conversa com o repórter. O primeiro contato que qualquer repórter geralmente tem com a comunidade Ubuntu é através de um triager de bug, que tenta montar um relatório de bug completo. É muito importante dar uma boa impressão, por isso, seja educado e tente usar o seu melhor inglês.

Trabalhar com bugs simples e não treinados é uma boa maneira de começar e familiarizar-se com o procedimento de triagem, pois você terá que lidar com todos os aspectos do ciclo de vida de um bug. A seção Untriaged bugs explica onde encontrá-los.

Tipos de bugs

Apresentar relatórios

Os relatórios do Apport são erros reportados através do programa automatizado de relatórios de erros Apport. Relatar erros usando o Apport é a maneira preferida de relatar um bug, pois fornece aos desenvolvedores muitas informações sobre o sistema afetado. Quando o Apport é usado, menos informações adicionais são necessárias, acelerando todo o processo.

Você pode reconhecer esses bugs pela lista adicionada de informações do sistema em sua descrição. Alguns programas possuem ganchos para o Apport, adicionando mais informações ao relatar um bug. Essas informações geralmente podem ser encontradas nos anexos.

Erros confirmados

Quando um bug é marcado como "Confirmado", ainda não está totalmente triado. Esse bug está muito perto de ser marcado como "Triaged", mas você precisa ter certeza de que está pronto para os desenvolvedores consertarem.

Solicitações de recursos

Se o relatório de erros for realmente uma solicitação de recurso, existem duas possibilidades. Se o aprimoramento solicitado for pequeno e bem definido e / ou a sugestão se referir a um projeto upstream, a Importância do bug deve ser definida como 'Lista de desejos'. Quando o relatório estiver concluído, o status deve ser definido como "Triagem".

Apenas os membros da equipe de Controle de Erros do Ubuntu podem fazer isso. Se você não é um membro, terá que pedir a alguém que o faça por você. Cole o número do bug em # ubuntu-bugs e diga que você acha que o bug deve estar definido como 'Wishlist'. Alguém vai notar e definir para você, embora não necessariamente imediatamente.

Como funciona internamente?

Interceptação de falha

O Apport usa / proc / sys / kernel / core_pattern para enviar diretamente o dump principal para o apport:

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

Nota: mesmo que o ulimit esteja configurado para desabilitar os arquivos principais (especificando um tamanho de arquivo do núcleo igual a zero usando ulimit -c 0), o apport ainda capturará a falha. Para interceptar falhas do Python, ele instala um /etc/python*/sitecustomize.py para chamar o apport em exceções não tratadas.

Exemplo

O Apport pode até capturar arquivos principais se o PID 1 (Upstart) morrer:

  1. Se o Upstart detecta uma inconsistência interna, ele aumenta o SIGABRT sinal.
  2. O manipulador de falhas do Upstart é chamado no SIGABRT.
  3. O manipulador de falhas de inicialização avançada bifurca um processo filho.
  4. O processo filho Upstart reaumenta o sinal que resulta na saída anormal da criança.
  5. O kernel detecta que o processo filho saiu anormalmente e chama apport, canalizando o arquivo principal para a entrada padrão do apports (devido a / proc / sys / kernel / core_pattern).
  6. o apport grava o arquivo principal no disco em / var / crash /.
  7. O PID 1 aguarda que seu filho termine (o que só acontece quando o apport termina de gravar o arquivo principal).
  8. PID 1 sai.
  9. pânico do kernel.
  10. Na próxima inicialização, o Whoopsie detectará o arquivo de falha e o processará.

Backend

Para manter o atraso e o impacto da CPU / IO o mais baixo possível, /usr/share/apport/apport apenas coleta dados que precisam ser adquiridos enquanto o processo travado ainda existe: informações de /proc/pid , o dump principal, o caminho do executável e o número do sinal. O relatório é gravado em /var/crash/executable_path.uid.crash .

Invocação de frontend

No Gnome, o update-notifier mantém um relógio inotify em /var/crash . Sempre que há algo novo, ele chama / usr / share / apport / apport-checkreports. Se houver novos relatórios, ele chama / usr / share / apport / apport-gtk, que é o frontend mostrado nas capturas de tela acima.

O front-end então coleta informações adicionais, como versões de pacotes, checksums de arquivos de pacotes ou versão do SO, e chama todos os ganchos de pacotes correspondentes. Para desabilitar isso, você pode executar o gsettings set com.ubuntu.update-notifier show-apport-crashes false (como seu usuário comum de desktop).

Auto-retracer baseado em Launchpad

O centro de dados da Canonical executa um serviço que rastreia automaticamente os bugs com um dado. Marcando os bugs de acordo com a arquitetura no Launchpad, um retrace será feito e a tag será removida. As tags usadas são need-i386-retrace ou need-amd64-retrace. Veja o anúncio.

Ganchos do Apport por pacote

É possível que os pacotes especifiquem informações coletadas do sistema e incluídas no relatório de erros. Isso é feito pelos hooks contidos nos pacotes. Para alguns exemplos úteis, veja:

  • source_xorg.py - adiciona arquivos de log adicionais e detalhes de hardware relatórios de bugs
  • usplash - ignora falhas em caminhos de código específicos
  • source_totem.py - faz perguntas ao repórter e reúne diferentes informação baseada em respostas

em / usr / share / apport / package-hooks. Há também uma lista de pacotes que fornecem ganchos de acesso.

Se um relatório de falha ou bug for enviado através do apport, os ganchos relevantes serão executados automaticamente. Se você tem um bug já reportado que foi arquivado sem um dado, e você está interessado nas informações desses ganchos, você pode pedir ao repórter de bug para usar o número do bug apport-collect.

Use a fonte, Luke!

  • Você pode fazer o download do tarball upstream do projeto Launchpad página, ou o tarball de origem do Ubuntu a partir do arquivo Ubuntu.
  • O
  • apport é desenvolvido com o bazar RCS no Launchpad. Se você quiser contribuir para isso ou desenvolver seu próprio sistema baseado nele, você pode obter seu próprio branch com bzr get lp: apport para trunk, ou debcheckout -a para o ramo de empacotamento do Ubuntu.

Planos futuros

Várias melhorias no desempenho, melhores ferramentas para trabalhar com relatórios e integração de mais idiomas (rastreamentos de pilha do Mono / Python, mensagens de asserção, etc.) Consulte a especificação relevante.

Fontes: Suporte , Como fazer triagem e Como habilitar o Apport

    
por Mitch 24.06.2013 / 22:25