Много Sigsegv, в то время как stroace'ing Java-процесс

StackOverflow https://stackoverflow.com/questions/3731784

  •  03-10-2019
  •  | 
  •  

Вопрос

Интересные вещи произошли во время отладки одного из модульных тестов на CI Server (фактически сборка Maven). Я подключаюсь к Java-процессу с strace -ff -e trace=network -p [pid] проследить сетевую активность процесса сборки. И это то, что я видел:

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)

Итак, там у нас есть некоторые сетевые активности (это то, что я на самом деле ищу), и много SIGSEGV сигналы.

Построить законченно правильно (только один сломанный тест). Ситуация определяется и воспроизведена снова и снова. Что это значит?

Это было полезно?

Решение

Поскольку это Java, это означает, что ваш JVM использует Sigsegvs для чего-то. Общие применения включают в себя

  • NULL POINTER DEREFERCESS - JVM ловит SIGSEGVS для адресата 0 и превращает их в NullPointexceptions

  • Коллекция мусора написывает барьеры - редко измененные страницы отмечены только для чтения, а Segvs Catch пишет к ним. Таким образом, сборщик мусора не должен просматривать всю память все время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top