2010-09-17 14 views
13

दिलचस्प सामग्री तब हुई जब मैंने सीआई सर्वर (मेवेन बिल्ड वास्तव में) पर यूनिट परीक्षणों में से एक को डीबग किया। मैं निर्माण प्रक्रिया की नेटवर्क गतिविधि का पता लगाने के लिए strace -ff -e trace=network -p [pid] के साथ जावा प्रक्रिया से कनेक्ट हूं। और है कि मैं क्या देखा है:जावा प्रक्रिया को छेड़छाड़ करते समय बहुत सी SIGSEGV

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 संकेतों का एक बहुत (यह क्या मैं वास्तव में के लिए खोज कर रहा हूँ है)।

बिल्ड सही ढंग से समाप्त हुआ (केवल एक टूटा परीक्षण)। स्थिति निर्धारण और पुन: उत्पन्न बार-बार। इसका क्या मतलब है?

उत्तर

17

चूंकि यह जावा है, इसका मतलब है कि आपका JVM कुछ के लिए SIGSEGV का उपयोग कर रहा है। सामान्य उपयोग

  • नल पॉइंटर dereferences में शामिल हैं - JVM 0 संबोधित करने के लिए SIGSEGVs पकड़ता है और उन्हें NullPointerExceptions में बदल जाता है

  • कचरा संग्रहण लिखने बाधाओं - शायद ही कभी बदल पृष्ठों केवल पढ़ने के लिए चिह्नित कर रहे हैं और SEGVs पकड़ करने के लिए लिखता है उन्हें। इस तरह कचरा कलेक्टर को हर समय स्मृति की सभी चीज़ों को पुन: स्कैन नहीं करना पड़ता है।

+1

बहुत रोचक, धन्यवाद! क्या आप कुछ लिंक प्रदान कर सकते हैं जहां मैं इस सामान के बारे में अधिक जानकारी प्राप्त कर सकता हूं? –

+0

क्या यह हानिकारक है या इसे संबोधित किया जाना चाहिए? मैं ट्रस के माध्यम से सौरलिस पर चल रहे मेरे आवेदन पर समान अवसर देख रहा हूं। – Tom

+1

मुझे लगता है कि चिंतित होने की कोई आवश्यकता नहीं है :) –

संबंधित मुद्दे