En Ubuntu me he enfrentado al error de falla de segmentación muchas veces. ¿Qué es una falla de segmentación y cuándo ocurre?
En Ubuntu me he enfrentado al error de falla de segmentación muchas veces. ¿Qué es una falla de segmentación y cuándo ocurre?
Respuestas:
Un error que indica un fallo de segmentación (o segfault , o SIGSEGV ) en Ubuntu y otros sistemas operativos similares a Unix, o un fallo de protección general en Windows, es cuando un programa intenta acceder a una parte de la memoria a la que no se puede acceder, o al que el programa tiene prohibido el acceso. Una falla de segmentación es un tipo de bloqueo del programa, es decir, una terminación anormal de un programa. Ver los artículos de Wikipedia sobre accidentes , protección de memoria , error de segmentación , error de protección general , y SIGSEGV para obtener más información (y una comprensión más textura del tema que se presenta aquí).
Una falla de segmentación casi siempre se debe a un error en el programa donde ocurre. Supongo que la mayoría o todas sus fallas de segmentación están ocurriendo desde la misma aplicación. Proporcione más detalles sobre las circunstancias bajo las cuales ocurren fallas de segmentación en su máquina y qué programa se está bloqueando. Proporcione también el texto completo y exacto del mensaje de error que está recibiendo y cualquier otro mensaje que aparezca antes. Esto debería permitirnos proporcionar consejos detallados específicos para su problema (en lugar de solo información general sobre qué es una falla de segmentación).
La mejor manera de proporcionar esta información es editar su pregunta para incluirla . Alternativamente, si desea que esta pregunta sea solo sobre fallas de segmentación en general, puede publicar una nueva pregunta para preguntar qué está causando específicamente sus fallas de segmentación (si hace esto, asegúrese de proporcionar todos estos detalles en su nueva pregunta) .
La falla de segmentación es causada por un error en la aplicación. Técnicamente significa que la aplicación intenta leer o escribir en una parte de la memoria que no le pertenece (o que no existe). Por supuesto, está prohibido leer o escribir en la memoria de otra persona y cuando el sistema (kernel) detecta esto, obligará a la aplicación a cerrar.
Atrás quedaron los días en que las personas solían rastrear el código de ensamblaje y depurar un problema. Abends, Dr. Watson, Falla de segmentación. Esos días verdes se han ido.
Una de las razones de una falla de segmentación es cuando falla el código que tiene acceso directo a la memoria. Cuando un fragmento de código intenta acceder al segmento de memoria de una aplicación diferente, se produce un fallo de segmentación. Algunas veces, las asignaciones de memoria se mueven para permitir que se asignen bloques contiguos de memoria más grandes. Mientras intenta recuperarse, el núcleo se esfuerza por guardar toda su información de memoria en un archivo, el estado actual de todas las aplicaciones que se ejecutan en la CPU y su estado (última instrucción ejecutada) en un archivo y simplemente muere. También intentará almacenar tanta información de recuperación y cerrar tantos archivos como sea posible, para que los discos duros no obtengan enlaces rotos.
Depúrelo y corríjalo si puede reproducirlo con frecuencia. Si no puedes reproducirlo, solo une tus manos, arrodíllate y reza como el infierno para que no lo veas "regularmente".
SIGSEGV
controlador en otra cosa que no sea SIG_DFL
(que es volcar el núcleo y salir por a SIGSEGV
) ya que si está accediendo a la memoria que no debería estar, entonces algo ha salido muy mal mal y la recuperación es probablemente imposible. (2) Un núcleo se descargará solo una vez que se haya detenido el proceso. (3) El volcado del núcleo solo incluye la memoria y los registros del proceso que se volcó. (4) Otros procesos, la CPU y el núcleo no se ven afectados por una falla de otro proceso.