Como resolver "Falha na segmentação (núcleo despejado)"


15

Estou usando o Ubuntu 14.04.

Depois de instalar alguns aplicativos, enfrentei um erro de falha de segmentação (core dumped).

O que isso significa ? Como posso resolver esse problema?

Por exemplo :

Depois de instalar o chrome-stable, ao iniciá-lo no terminal, encontro esse erro.


Alguns programas binários travaram, mas isso é muito específico para o programa que travou; portanto, talvez você precise nos dizer qual programa produziu isso, além de tentar atualizá-lo.
Kwaadpepper #


1
Por ser uma fonte fechada, é melhor enviar um relatório de erro ao tio GooGle!
user.dz

1
Bom SH :) vou perguntar ao tio; P
Ravan

1
Tente remover suas preferências e cache sudo rm -rf ~/.config/google-chrome ~/.cache/google-chrome,. Em seguida, executá-lo é o modo incógnitogoogle-chrome --incognito
user.dz

Respostas:


12

O que isso significa?

Veja AU: O que é uma falha de segmentação? e também este que tem alguns exemplos de como reproduzi-lo, SO: O que é falha de segmentação? . a descrição mais simples que posso incluir (pode não ser a perfeita):

O programa tentou acessar uma área de memória fora da própria seção. OS bloqueia.

Alguns casos: Leitura de valor com ponteiro inicializado, Saindo do intervalo em uma matriz, Chamada de função (quando a compatibilidade com versões anteriores não é mantida), ...

No entanto, nem sempre é fácil encontrar a causa em programas grandes ou nos que se baseiam em outras bibliotecas de projetos. E a maioria dos casos termina com um relatório de erro, para o programa de destino ou um para suas dependências (projeto upstream ou pacote de distribuição downstream).

Como posso resolver esse problema?

Se você não fez nenhuma configuração / instalação personalizada e todas as atualizações instaladas. Dispare um relatório de erro , consulte Como relato um erro?

Se o código aberto for suportado pelo Ubuntu, use ubuntu-bug( apport-bug). Para código fechado de terceiros, consulte as páginas de ajuda de como reportar bugs e coletar dados relacionados.


Nota: Se você possui um pouco de experiência em programação, é recomendável tentar o seu melhor para resolvê-lo. Existem muitos relatórios de bugs inativos por anos. Ou pelo menos colete dados de depuração suficientes para resolver o problema antes de relatá-lo.

Algumas ferramentas úteis para depuração

  1. apport-bug logs / core dump / backtrace

    Se você não tiver uma mensagem de erro antes da falha de segmentação. Execute-o com a --saveopção e procure o log de rastreamento posterior:

    apport-bug program-cmd --save bug-report_output.txt
    
  2. gdb código fonte de backtrace / depuração

    Se não funcionou, use gdb:

    $ gdb program-cmd
    (gdb) run
    (gdb) backtrace
    

    Se você receber alguma mensagem de erro, verifique a web, a barra de ativação e o rastreador de erros do projeto upstream, se houver algum caso semelhante.

    Para alguns usuários avançados ou que seguem o caminho de aprendizado do ac / c ++, eles podem baixar os -dbgpacotes de símbolos correspondentes . Em seguida, você pode usar gdbpara rastrear o fluxo do programa através da fonte e obter a função / instrução exata que gera o erro de tempo de execução.

  3. strace rastreamento de chamada do sistema

    Outra ferramenta que pode ajudar é strace, eu gosto. É realmente uma ferramenta poderosa.

    Apresenta-se:

    No caso mais simples, straceexecute o comando especificado até que ele saia. Ele intercepta e registra as chamadas do sistema chamadas por um processo e os sinais recebidos por um processo. O nome de cada chamada do sistema, seus argumentos e seu valor de retorno são impressos em erro padrão ou no arquivo especificado com a opção -o.

    straceé uma ferramenta útil de diagnóstico, instrução e depuração. Os administradores de sistema, diagnosticadores e solucionadores de problemas acharão inestimável para solucionar problemas com programas para os quais a fonte não está prontamente disponível, pois eles não precisam ser recompilados para rastrear esses problemas. Estudantes, hackers e muito curiosos descobrirão que muito pode ser aprendido sobre um sistema e suas chamadas de sistema rastreando até programas comuns. E os programadores descobrirão que, como chamadas e sinais do sistema são eventos que acontecem na interface do usuário / kernel, um exame mais atento desse limite é muito útil para o isolamento de erros, verificação de sanidade e tentativa de capturar as condições de corrida.

    Fonte: man strace

  4. ltrace rastreamento de chamada de biblioteca dinâmica

    ltraceé um programa que simplesmente executa o comando especificado até que ele saia. Ele intercepta e registra as chamadas da biblioteca dinâmica chamadas pelo processo executado e os sinais recebidos por esse processo. Também pode interceptar e imprimir as chamadas do sistema executadas pelo programa.

    Seu uso é muito semelhante ao strace(1).

    Fonte: man ltrace

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.