2010-09-17 9 views
13

Si sono verificati problemi interessanti durante il debug di uno dei test di unità sul server CI (creazione di maven in realtà). Mi collego al processo java con strace -ff -e trace=network -p [pid] per tracciare l'attività di rete del processo di generazione. E questo è quello che ho visto:Un sacco di SIGSEGV durante il processo java strace'ing

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) 

Così, ci abbiamo alcune attività di rete (che è quello che sono in realtà la ricerca di), e un sacco di SIGSEGV segnali.

Creazione completata correttamente (solo una prova interrotta). Situazione determinabile e riprodotta più e più volte. Cosa significa questo?

risposta

17

Poiché questo è java, significa che JVM sta utilizzando SIGSEGV per qualcosa. Gli usi comuni includono

  • dereferenziazioni di puntatori nulli - JVM cattura SIGSEGVs per affrontare 0 e li trasforma in NullPointerExceptions

  • raccolta rifiuti barriere di scrittura - pagine raramente modificate sono contrassegnati sola lettura e SEGVs cattura scrive a loro. In questo modo il garbage collector non deve rieseguire la scansione di tutta la memoria tutto il tempo.

+1

Molto interessante, grazie! Potete fornire alcuni link dove posso trovare maggiori informazioni su questa roba? –

+0

Questo è innocuo o dovrebbe essere indirizzato? Sto vedendo simili che si verificano sulla mia applicazione in esecuzione su Solaris tramite traliccio. – Tom

+1

Penso che non sia necessario preoccuparsi :) –

Problemi correlati