2010-09-17 11 views
13

Cosas interesantes ocurrieron mientras depuro una de las pruebas de unidad en el servidor de CI (en realidad maven build). Me conecto al proceso de java con strace -ff -e trace=network -p [pid] para rastrear la actividad de red del proceso de compilación. Y eso es lo que vi:Una gran cantidad de SIGSEGV mientras strace'ing proceso de Java

Process 26324 attached 
Process 26325 attached (waiting for parent) 
Process 26325 resumed (parent 26312 ready) 
Process 26325 detached 
Process 26324 detached 
Process 26320 detached 
Process 26317 detached 
Process 26308 resumed 
[pid 26308] --- SIGCHLD (Child exited) @ 0 (0) --- 
Process 26307 resumed 
Process 26308 detached 
[pid 26310] --- SIGCHLD (Child exited) @ 0 (0) --- 
Process 26310 detached 
[pid 25551] --- SIGSEGV (Segmentation fault) @ 0 (0) --- 
Process 26309 detached 
Process 26307 detached 
[pid 25717] --- SIGSEGV (Segmentation fault) @ 0 (0) --- 
[pid 25715] --- SIGSEGV (Segmentation fault) @ 0 (0) --- 
[pid 25713] --- SIGSEGV (Segmentation fault) @ 0 (0) --- 
[pid 25551] socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 163 
[pid 25551] setsockopt(163, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0 
[pid 25551] bind(163, {sa_family=AF_INET, sin_port=htons(6590), sin_addr=inet_addr("0.0.0.0")}, 16) = 0 
Process 26471 attached (waiting for parent) 
Process 26471 resumed (parent 25551 ready) 
[pid 25551] --- SIGSEGV (Segmentation fault) @ 0 (0) --- 
[pid 25551] --- SIGSEGV (Segmentation fault) @ 0 (0) --- 
[pid 26471] recvfrom(163, <unfinished ...> 
[pid 25551] socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 164 
[pid 25551] setsockopt(164, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0 
[pid 25551] bind(164, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, 16) = 0 
[pid 25551] getsockname(164, {sa_family=AF_INET, sin_port=htons(45728), sin_addr=inet_addr("0.0.0.0")},[16]) = 0 
[pid 25551] --- SIGSEGV (Segmentation fault) @ 0 (0) --- 
[pid 26471] <... recvfrom resumed> 0x8e80618, 65536, 0, 0x6ef6aea0, 0x6ef6ae9c) = ? ERESTARTSYS (To be restarted) 
[pid 26471] --- SIGRT_29 (Real-time signal 27) @ 0 (0) --- 
Process 26471 detached 
Process 26472 attached (waiting for parent) 
Process 26472 resumed (parent 25551 ready) 
Process 26473 attached (waiting for parent) 
Process 26473 resumed (parent 25551 ready) 

lo tanto, no tenemos un poco de actividad de la red (que es lo que estoy realmente busco), y una gran cantidad de señales SIGSEGV.

Estructura finalizada correctamente (solo una prueba rota). Situación determinable y reproducida una y otra vez. ¿Qué significa esto?

Respuesta

17

Dado que esto es java, significa que su JVM está utilizando SIGSEGV para algo. Los usos comunes incluyen

  • desreferencias puntero nulo - la JVM atrapa SIGSEGVs a la dirección 0 y los convierte en NullPointerExceptions

  • de recolección de basura barreras de escritura - rara vez cambiado páginas están marcados sólo lectura y SEGVs captura escribe a ellos. De esta forma, el recolector de basura no tiene que volver a escanear toda la memoria todo el tiempo.

+1

Muy interesante, ¡gracias! ¿Puede proporcionar algunos enlaces donde puedo encontrar más información sobre esto? –

+0

¿Es inofensivo entonces o debería abordarse? Veo que ocurre algo similar en mi aplicación que se ejecuta en paneles solares a través de truss. – Tom

+1

Creo que no hay necesidad de preocuparse :) –

Cuestiones relacionadas