Cómo resolver "Fallo de segmentación (núcleo volcado)"

15

Estoy usando Ubuntu 14.04.

Después de instalar algunas aplicaciones, me enfrenté a un error de segmentación (error de núcleo).

Qué significa eso ? Cómo puedo resolver este problema ?

Por ejemplo :

Después de instalar chrome-stable, cuando lo ejecuto desde la terminal, experimento este error.

Ravan
fuente
Se bloqueó algún programa binario, pero esto es muy específico del programa que se bloqueó, por lo que es posible que deba decirnos qué programa produjo esto, también podría intentar actualizarlo.
Kwaadpepper
1
¿
agold
1
Como se trata de una fuente cerrada, ¡es mejor que presente un informe de error al tío GooGle!
user.dz
1
Buena SH :) le preguntaré a tío; P
Ravan
1
Tratar y eliminar las preferencias de caché y, sudo rm -rf ~/.config/google-chrome ~/.cache/google-chrome. Luego ejecútelo en modo incógnitogoogle-chrome --incognito
user.dz

Respuestas:

12

Qué significa eso?

Ver AU: ¿Qué es una falla de segmentación? y también esto que tiene algunos ejemplos de cómo reproducirlo, SO: ¿Qué es la falla de segmentación? . La descripción más simple con la que puedo venir (puede que no sea la perfecta):

El programa intentó acceder a un área de memoria fuera de su propia sección. El sistema operativo lo bloquea.

Algunos casos: valor de lectura con puntero inicializado, fuera de rango en una matriz, llamada de función (cuando no se mantiene la compatibilidad con versiones anteriores), ...

Sin embargo, no siempre es fácil encontrar la causa con programas grandes o aquellos que se transmiten en otras bibliotecas de proyectos. Y la mayoría de los casos terminan con un informe de error, ya sea para el programa de destino o uno si sus dependencias (ya sea proyecto ascendente o paquete de distribución descendente).

¿Cómo puedo resolver este problema?

Si no realizó ninguna configuración / configuración personalizada y todas las actualizaciones se instalaron. Active un informe de error , consulte ¿Cómo denuncio un error?

Si el código abierto es compatible con Ubuntu use ubuntu-bug( apport-bug). Para fuentes cerradas de terceros, consulte sus páginas de ayuda sobre cómo informar errores y recopilar datos relacionados.


Nota: Si tiene un poco de experiencia en programación, se recomienda que haga todo lo posible para resolverlo usted mismo. Hay muchos informes de errores por ahí inactivos durante años. O al menos recopile suficientes datos de depuración para resolver el problema antes de informarlo.

Algunas herramientas útiles para la depuración

  1. apport-bug registros / volcado de núcleo / traza inversa

    Si no tiene un mensaje de error antes de la falla de segmentación. Ejecútelo con la --saveopción y busque el registro de rastreo posterior:

    apport-bug program-cmd --save bug-report_output.txt
    
  2. gdb código fuente de rastreo / depuración

    Si no funcionó, use gdb:

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

    Si recibe algún mensaje de error, consulte la web, la plataforma de lanzamiento y el rastreador de errores del proyecto ascendente si hay casos similares.

    Para algunos usuarios avanzados o que siguen la ruta de aprendizaje de ac / c ++, pueden descargar los -dbgpaquetes de símbolos correspondientes . Luego puede usar gdbpara rastrear el flujo del programa a través de la fuente y obtener la función / instrucción exacta que genera el error de tiempo de ejecución.

  3. strace sistema de seguimiento de llamadas

    Otra herramienta que puede ayudar es strace, me gusta. Es realmente una herramienta poderosa.

    Se presenta a sí mismo:

    En el caso más simple, straceejecuta el comando especificado hasta que salga. Intercepta y registra las llamadas al sistema que son llamadas por un proceso y las señales que recibe un proceso. El nombre de cada llamada al sistema, sus argumentos y su valor de retorno se imprimen en un error estándar o en el archivo especificado con la opción -o.

    stracees una herramienta útil de diagnóstico, instrucción y depuración. Los administradores del sistema, los diagnosticadores y los solucionadores de problemas encontrarán que es invaluable para resolver problemas con programas para los cuales la fuente no está fácilmente disponible, ya que no es necesario volver a compilarlos para rastrearlos. Los estudiantes, los piratas informáticos y los demasiado curiosos descubrirán que se puede aprender mucho sobre un sistema y sus llamadas al rastrear incluso programas ordinarios. Y los programadores descubrirán que, dado que las llamadas y señales del sistema son eventos que suceden en la interfaz usuario / kernel, un examen minucioso de este límite es muy útil para el aislamiento de errores, la comprobación de la cordura y el intento de capturar las condiciones de la carrera.

    Fuente: man strace

  4. ltrace rastreo dinámico de llamadas de biblioteca

    ltracees un programa que simplemente ejecuta el comando especificado hasta que sale. Intercepta y registra las llamadas a la biblioteca dinámica que son llamadas por el proceso ejecutado y las señales que recibe ese proceso. También puede interceptar e imprimir las llamadas al sistema ejecutadas por el programa.

    Su uso es muy similar a strace(1).

    Fuente: man ltrace

user.dz
fuente