Question

Intéressant des choses pendant que je debug a eu lieu l'un des tests unitaires sur le serveur CI (en fait de build Maven). Je me connecte à une procédure java avec strace -ff -e trace=network -p [pid] pour tracer l'activité de réseau de processus de construction. Et c'est ce que je voyais:

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)

Donc, nous avons là une activité de réseau (c'est ce que je cherche en fait pour), et beaucoup de signaux SIGSEGV.

Construire terminé correctement (un seul test cassé). Situation déterminable et reproduit encore et encore. Qu'est-ce que cela signifie?

Était-ce utile?

La solution

Comme cela est java, cela signifie que votre machine virtuelle Java utilise SIGSEGVs pour quelque chose. Parmi les utilisations courantes

  • pointeur null déréférencement - la machine virtuelle Java attrape SIGSEGVs à l'adresse 0 et les transforme en NullPointerExceptions

  • collecte des ordures barrières d'écriture - pages rarement modifiées sont marquées en lecture seule et écriture de capture SEGVs pour eux. De cette façon, le garbage collector ne pas réanalyser toute la mémoire tout le temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top