2010-03-28 18 views
6

Estoy tratando de resolver un error de segmentación. Este mensaje aparece en mi apache-error.log:CoreDumpDirectory no funciona en ubuntu; obteniendo un error de segmentación con php

[Aviso] pid infantil 3979 de la señal de salida de fallo segmentación (11)

He intentado desactivar algunos módulos de Apache y PHP, pero I' Todavía estoy recibiendo el mismo error.

También he intentado poner esto en apache2.conf:

CoreDumpDirectory/tmp/apache2-GDB-dump

y luego chmod 777, chown www-data ... así que el servidor puede escribir

No puedo ver ningún archivo de volcado de núcleo para darme una pista sobre el error.

¿Alguien tiene una idea de por qué CoreDumpDirectory no está funcionando en Ubuntu?

respuestas: $ ulimit -a núcleo tamaño del archivo
(bloques, -c) tamaño seg de datos ilimitado
(Kbytes, -d) la programación ilimitada prioridad (-e) 0 Tamaño del archivo (bloques , -F) señales pendientes ilimitadas (-i) 15863 max memoria bloqueada
(kbytes, -l) tamaño de la memoria 32 max
(kbytes, -m) archivos abiertos ilimitadas
(-n) 1024 tamaño de la tubería (512 bytes, -p) 8 colas de mensajes POSIX
(bytes, -q) 819 200 en tiempo real prioridad (-r) 0 pila tamaño
(kbytes, -S) 8,192 tiempo de CPU
(segundos, -t) user max ilimitado procesos (-u) 15 863 la memoria virtual (kbytes, -V) bloqueos de archivo ilimitado
(-x) ilimitada

Respuesta

11

finalmente pude ver volcado de memoria de Apache en Ubuntu:

  1. edición /etc/default/apport
  2. editar apache2.conf:

    CoreDumpDirectory /tmp/apache2-gdb-dump 
    
  3. asegúrese de que Apache puede escribir en él:

    # chmod 777 /tmp/apache2-gdb-dump 
    
  4. quitar límite de tamaño de vaciado de memoria:

    # ulimit -c unlimited 
    
  5. Opcionalmente, cambie el patrón de nombre de los volcados del núcleo :

    # echo 'coredump-%e.%p' > /proc/sys/kernel/core_pattern 
    

analizar el uso volcado gdb:

$ gdb apache2 /tmp/apache2-gdb-dump/coredump-x.x 

Para ver detalles StackTrace, en GDB:

gdb> where 

Esto lo hice, y obtuvo el núcleo volcado. Sin embargo, mi problema no se resolvió mirando el núcleo; aparentemente fue un problema en mi script php.

Más información: http://matrafox.info/apache-child-pid-exit-signal-segmentation-fault.html

+0

Es necesario 'sudo mkdir/tmp/apache2-gdb- volcar antes de chmod/chown it. –

+3

¿Qué cambiaste en/etc/default/apport? –

+1

@MarkTheunissen Creo que cambiar habilitado = 0 a habilitado = 1 – arod

2

vaciados de memoria están desactivados por defecto en Ubuntu

Prueba esto:

ulimit -c unlimited 

"ulimit -a" te dice lo que el límite actual es (0 significa desactivado)

+0

que no parece hacer nada > $ ulimit -c unlimited > $ // no pasa nada > $ sudo ulimit -c unlimited > sudo: ulimit : comando no encontrado > $ man ulimit Ninguna entrada manual para ulimit > sudo aptitude search ulimit p cpulimit - limita el uso de la CPU de un proceso (??) – arod

1

tenga en cuenta que el subdirectorio en/tmp se eliminará al reiniciar el sistema, causando Apache para no empezar debido a errores de configuración.

En una segunda nota, el sonido no es necesario./tmp se modificó 777 para que cualquiera pueda leer/escribir allí.

@arod sudo ulimit -c no funciona porque -c también es un argumento de sudo. Es necesario que sudo -s, a continuación, ulimit -c

Cuestiones relacionadas