2010-09-17 16 views
13

Thú vị xảy ra trong khi tôi gỡ lỗi một trong các bài kiểm tra đơn vị trên máy chủ CI (maven xây dựng thực sự). Tôi kết nối với quá trình java với strace -ff -e trace=network -p [pid] để theo dõi hoạt động mạng của quá trình xây dựng. Và đó là những gì tôi đã thấy:Rất nhiều SIGSEGV trong khi quá trình 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) 

Vì vậy, chúng tôi có một số hoạt động mạng (đó là những gì tôi thực sự tìm kiếm) và rất nhiều tín hiệu SIGSEGV.

Xây dựng hoàn tất chính xác (chỉ một thử nghiệm bị hỏng). Tình huống có thể xác định và sao chép nhiều lần. Điều đó có nghĩa là gì?

Trả lời

17

Vì đây là java, điều đó có nghĩa là JVM của bạn đang sử dụng SIGSEGV cho một thứ gì đó. sử dụng phổ biến bao gồm

  • dereferences con trỏ null - JVM bắt SIGSEGVs để giải quyết 0 và biến chúng thành NullPointerExceptions

  • thu gom rác thải hàng rào ghi - hiếm khi thay đổi các trang được đánh dấu chỉ đọc và SEGVs bắt ghi vào chúng. Bằng cách này, bộ thu gom rác không phải quét lại tất cả bộ nhớ mọi lúc.

+1

Rất thú vị, cảm ơn bạn! Bạn có thể cung cấp một số liên kết nơi tôi có thể tìm thêm thông tin về nội dung này không? –

+0

Điều này vô hại sau đó hay nó nên được giải quyết? Tôi thấy tương tự xảy ra trên ứng dụng của tôi chạy trên solaris thông qua giàn. – Tom

+1

Tôi nghĩ rằng không cần phải lo lắng :) –

Các vấn đề liên quan