दिलचस्प पोस्ट
अपाचे POI XWPF में एक पाठ की जगह स्ट्रिंग से जावास्क्रिप्ट नई regexp डिज्स्स्ट्रा के एल्गोरिथम का उपयोग करने वाले नकारात्मक भार सी ++ टेम्पलेट बहुरूपता Django – एक अनुसूचित नौकरी सेट करें? जावा: लूप init के लिए कई चर को आरंभ करें? मैं प्रदूषण को रोकने के लिए कैसे एक AngularJS निर्देश कर सकता हूं? एडीटी टूटने के बाद ग्रहण फिक्स करना अजगर / सिप्पी में बहुभिन्नरूपी पट्टी प्रक्षेप? सी जोरदार टाइप किया गया है? XPATHS और डिफ़ॉल्ट नेमस्पेस एमएस चार्ट नियंत्रण सी # के लिए एक स्क्रॉल बार जोड़ना क्या मैप्टललिब में एक कैप्शन बॉक्स खींचने का एक तरीका है डेटाबेस> 500 लाख पंक्तियों को नियंत्रित कर सकता है कस्टम डिजाइनिंग EditText

जावा वीएम: 1.6.0_17 और 1.6.0_18 दोनों पर पुन: उत्पादक SIGSEGV, रिपोर्ट कैसे करें?

संपादित करें : यह प्रतिलिपि प्रस्तुत करने योग्य SIGSEGV एक लिनक्स मशीन पर एक से अधिक प्रो और 2 जीबी से ज्यादा मेम के साथ होता है, इसलिए जावा -सर्वर मोड में डिफ़ॉल्ट है। दिलचस्प बात यह है कि अगर मैं "-केलिए" पर बल देता हूं तो अब कोई दुर्घटना नहीं है … (मुझे अभी भी यकीन नहीं है कि मेरी प्रतिलिपि प्रस्तुत करने योग्य SIGSEGV के साथ क्या करना है, लेकिन फिर भी यह दिलचस्प है)।

पहले ध्यान दें कि यह थोड़ा संबंधित है, लेकिन निम्नलिखित के समान नहीं है, क्योंकि हमारे मामले में यह केवल एक SIGSEGV होता है, और हम इसे ट्रिगर कर सकते हैं:

जेवीएम आउटऑफिममेरी त्रुटि "मौत सर्पिल" (स्मृति रिसाव नहीं)

यह संबंधित है क्योंकि जब हम अपने ऐप को "डेटा की बाढ़" के साथ खिलाते हैं, तब होता है: डेटा पाठ फ़ाइलों से आ रहा है और फिर संख्या-क्रुन्डेड (हाँ, वित्तीय संख्या में जावा क्रंचिंग)।

मैं केवल JV को केवल वैध जावा कोड का उपयोग करके SIGSEGV को ट्रिगर कर सकता हूं।

नोट : मैं हमेशा जीवीएम 1.6.0_17 एडीएन जेवीएम 1.6.0_18 को दुर्घटनाग्रस्त कर सकता हूं और यह सवाल इस समस्या के समाधान के बारे में नहीं है (उदाहरण के लिए वीएम पैरामीटर के साथ खेलना इस मुद्दे को ठीक कर सकता है लेकिन मैं उसके बाद नहीं हूं, मैं जानना चाहता हूं इस हमेशा प्रजनन के साथ क्या करना है SIGSEGV)

मेरे पास एक वैकल्पिक हल है जो हमारे ऐप को लॉन्च करते हुए जावा 1.5 का इस्तेमाल करते हैं (जबकि अभी भी एक ही मशीन पर इंटेलईजे आईडिया, आदि चलाने के लिए जावा 1.6 का उपयोग कर रहा है), लेकिन मेरा सवाल यह है कि इसकी सूचना दी जानी चाहिए और नहीं , अगर यह चाहिए, तो यह कैसे जानती है कि लॉग में स्वामित्व की जानकारी (पूर्ण hs_err _…_ लॉग) है।

हार्डवेयर त्रुटि को इनके लिए रद्द कर दिया जा सकता है:

  • यह एक कार्य केंद्र पर हो रहा है जो नियमित रूप से अपटाइम के महीनों तक पहुंचता है (मैं केवल तब रिबूट करता हूं जब मेरे ट्रिम कर दी गई और कठोर डेबियन लिनक्स को प्रभावित किए जाने पर गंभीर सुरक्षा पैच जारी होते हैं, जो वास्तव में अक्सर नहीं होता है) और जिस पर अनुप्रयोगों को कभी दुर्घटना नहीं होती है संभावना नहीं है कि उस मशीन पर एक हार्डवेयर मुद्दा है [अधिक नीचे])

  • एक ही आवेदन एक ही मशीन के तहत पूरी तरह से एक ही भार के नीचे एक JVM 1.5 के तहत काम करता है (इस तरह मैं ऐप का परीक्षण कर रहा हूं: मैं इसे केवल 1.5 वीएम के तहत लॉन्च करता हूं)

  • एक ही आवेदन एक ही (विशाल) भार के तहत एक से अधिक सैकड़ों ग्राहकों की मशीन पर ठीक काम करता है (कभी भी विंडोज़ + जेवीएम 1.5 या 1.6 पर एक बार क्रैश नहीं हुआ और ओएस एक्स + जेवीएम 1.5 या 1.6 पर एक बार क्रैश कभी नहीं हुआ [एक क्रैश एक त्वरित फोन ग्राहक से कॉल करें])

  • उसी मशीन पर अन्य आवेदन और एक ही 1.6.0_17 या 1.6.0_18 जेवीएम दुर्घटना (उदाहरण के लिए मुझे इंटेलिजिया आईडीईए के दो उदाहरण मिलते-जुलते मशीन पर दो अलग-अलग उपयोगकर्ताओं के रूप में चल रहे हैं और वे क्रैश नहीं करते हैं)

  • मशीन को "नियमित रूप से" मेम्टेस्ट के साथ परीक्षण किया गया है (एक नया ओएस स्थापित करने से पहले, जो पिछली बार हुआ था जब मैंने डेबियन लेनी स्थापित की थी, जो कि पहले कभी नहीं)

यहां पर प्रतिलिपि प्रस्तुत करने योग्य-ऑन-डिमांड SIGSEGV है:

... $uname -a Linux saturn 2.6.26-2-686 #1 SMP Wed Nov 4 20:45:37 UTC 2009 i686 GNU/Linux ... $ export /home/wizard/jdk1.6.0_17/bin:$PATH ... $ java -version java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode) 

ऐप लॉन्च करें, इसे "डेटा का बाढ़" फ़ीड, कुछ सेकंड प्रतीक्षा करें …

फिर, हमेशा, 1.6.0_17 के लिए:

 # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0xb76d0080, pid=30793, tid=2514328464 # # JRE version: 6.0_17-b04 # Java VM: Java HotSpot(TM) Server VM (14.3-b01 mixed mode linux-x86 ) # Problematic frame: # V [libjvm.so+0x4bc080] # # An error report file with more information is saved as: # /home/wizard/hs_err_pid30793.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp 

(ध्यान दें कि लाइन '[libjvm.so + 0x4bc080]' प्रत्येक SIGSEGV पर 1.6.0_17 के लिए संगत है)

या 1.6.0_18 के लिए:

 # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0xb77468f0, pid=722, tid=2514516880 # # JRE version: 6.0_18-b07 # Java VM: Java HotSpot(TM) Server VM (16.0-b13 mixed mode linux-x86 ) # Problematic frame: # V [libjvm.so+0x4d88f0] # # An error report file with more information is saved as: # /home/wizard/hs_err_pid722.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # Aborted 

(ध्यान दें कि लाइन "[libjvm.so + 0x4d88f0]" प्रत्येक SIGSEGV पर 1.6.0_18 के अनुरूप है)

समस्या यह है कि लॉग फ़ाइल में मालिकाना जानकारी है जिसे साझा नहीं किया जा सकता।

समस्या को पुन: उत्पन्न करने वाले "छोटे परीक्षण मामले" का पुनरुत्पादन या तो यथार्थवादी नहीं है: यह ऊपर लिखे गए मुद्दे के समान है, यह केवल तभी होता है जब "डेटा का बाढ़" एप को खिलाया जाता है

ध्यान दें कि सटीक एक ही आवेदन, बिल्कुल वही हार्डवेयर पर, बिल्कुल उसी JVM के साथ, लेकिन लिनक्स के दूसरे संस्करण (मैं पहले डेबियन एख था) ने एक बार SIGSEGV को ट्रिगर नहीं किया था।

लेकिन इसका मतलब यह नहीं है कि जेवीएम गलती नहीं है: यह अभी भी एक JVM मुद्दा हो सकता है।

क्या मुझे यह रिपोर्ट करना चाहिए और कैसे? (ध्यान में रखते हुए कि "प्रतिलिपि प्रस्तुत करने योग्य छोटे परीक्षण मामले" लिखना भ्रामक है और यह लॉग स्वामित्व वाली जानकारी है जिसे लीक नहीं किया जाना चाहिए)। क्या मैं सिर्फ लॉग को संपादित करना और उसे भेजना चाहिए?

जब आपके लॉग में स्वामित्व की जानकारी होती है और जब समस्या का पुन: प्रस्तुत करने वाला परीक्षण मामला वास्तविक रूप से संभव नहीं होता है, तो इस तरह से प्रतिलिपि प्रस्तुत करने योग्य SIGSEGV की रिपोर्ट करने की प्रक्रिया क्या है?

क्या आप में से किसी ने इस तरह के बग को खोलने में सफलता प्राप्त की है और फिर इसे बाद के जावा रिलीज़ में हल किया है?

क्या आपको लगता है कि यह "जावा समुदाय के लिए अच्छा है" ऐसी किसी समस्या की रिपोर्ट करने के लिए या मुझे परेशान नहीं करना चाहिए क्योंकि यह महत्वपूर्ण नहीं है?

Solutions Collecting From Web of "जावा वीएम: 1.6.0_17 और 1.6.0_18 दोनों पर पुन: उत्पादक SIGSEGV, रिपोर्ट कैसे करें?"

मुझे जेडीके 1.6_18 में अपग्रेड करने की इसी तरह की समस्या है और यह निम्न विकल्पों का उपयोग कर हल किया गया है:

 -server -Xms256m -Xmx748m -XX:MaxPermSize=128m -verbose:gc -XX:+PrintGCTimeStamps -Xloggc:/tmp/gc.log -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/tmp" -XX:+UseParallelGC -XX:-UseGCOverheadLimit # Following options just to remote monitoring with jconsole, useful to see JVM behaviour at runtime -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=MyHost 

मैं अभी भी दो बार जांच नहीं करता (यह एक उत्पादन वातावरण है), लेकिन मुझे लगता है कि त्रुटि दो कारणों से हुई थी:

1) ढेर और / या स्थायी स्थान के बारे में गलत सेटिंग (मुझे लगता है कि जेडीके 1.6 को ढेर में अधिक स्थान की जरूरत है और पिछले जेवीएम संस्करणों की तुलना में स्थायी रूप से) आउटऑफ़ममेरी एरर का कारण होता है, लेकिन

2) गलत मूल सेटिंग में किसी ने लिखा है

 -XX:+HeapDumpOnOutOfMemoryError="/tmp" 

और नहीं

 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/tmp" 

इसलिए संभव है कि जेवीएम हेपडम्प को लिखने में सक्षम नहीं था और हमें केवल SIGSEGV मिला (पिछले संस्करणों ने कार्य निर्देशिका में हीप डंप लिखा है)।

चेक- -server -XX:+UseParallelGC -XX:-UseGCOverheadLimit विकल्प भी चुनें मुझे लगता है कि वीएम मापदंडों के साथ खेलना एक समाधान नहीं है, बल्कि सही दृष्टिकोण भी है क्योंकि कचरा कलेक्टर (और न केवल) 1.5 और 1.6 के बीच बदल गए हैं।

समस्या यह है कि लॉग फ़ाइल में मालिकाना जानकारी है जिसे साझा नहीं किया जा सकता। समस्या को पुन: उत्पन्न करने वाले एक "छोटे परीक्षण मामले" का पुनरुत्पादन या तो यथार्थवादी नहीं है

यदि आप सूर्य को प्रतिलिपि प्रस्तुत करने योग्य परीक्षण के मामले के साथ नहीं प्रदान कर सकते हैं, तो वे इसके बारे में भी नहीं देखेंगे। मौका अच्छा है कि वे इसे अनदेखा कर लेंगे भले ही आप एक प्रयोगयोग्य परीक्षण मामले प्रदान करें। सूर्य में बग सबमिशन प्रक्रिया वांछित होने के लिए बहुत कुछ छोड़ती है

क्या मुझे यह रिपोर्ट करना चाहिए और कैसे?

यदि आप प्रतिलिपि प्रस्तुत करने योग्य परीक्षण के मामले में नहीं आ सकते हैं, तो चिंता न करें। यदि वे इस मुद्दे को पुन: उत्पन्न नहीं कर सकते, तो आप उन्हें क्या करने की उम्मीद करते हैं?

ध्यान दें कि सटीक एक ही आवेदन, बिल्कुल वही हार्डवेयर पर, बिल्कुल उसी JVM के साथ, लेकिन लिनक्स के दूसरे संस्करण (मैं पहले डेबियन एख था) ने एक बार SIGSEGV को ट्रिगर नहीं किया था।

क्या यह एक अलग बॉक्स पर समान हार्डवेयर और लिनक्स के एक ही संस्करण के साथ काम करता है?

यदि यह मदद करता है, तो आपके क्रैश रिपोर्ट में बग सबमिशन लिंक में यह अस्वीकरण है:

इसके अतिरिक्त, सन माइक्रोसिस्टम्स गोपनीयता की आपकी इच्छा का सम्मान करते हैं इस कार्यक्रम से एकत्रित व्यक्तिगत डेटा को सूर्य के बाहर बाहरी संस्थाओं के साथ बेचा, दिए या साझा नहीं किया जाएगा। आपके द्वारा सबमिट की गई रिपोर्ट और / या उस रिपोर्ट का दर्जा के बारे में मुद्दों को स्पष्ट करने के लिए हम आपके साथ संचार के लिए इस डेटा का उपयोग करेंगे। आपके द्वारा रिपोर्ट किए गए मुद्दे अन्य जेडीसी सदस्यों या सन ग्राहकों को उपलब्ध कराए जा सकते हैं, हालांकि आपके व्यक्तिगत डेटा को गोपनीय रखा जाएगा। यदि आप उपर्युक्त परिस्थितियों के साथ सहज नहीं हैं, तो कृपया सबमिट बटन को दबाएं नहीं। यदि आपके कोई प्रश्न हैं, तो कृपया हमारी गोपनीयता नीति देखें।

व्यक्तिगत रूप से, मैं रिपोर्ट करता हूं कि लॉग्स के साथ कोड सेगमेंट को सौंपने के लिए संभव है, यदि डेटा बहुत संवेदनशील नहीं है (संभवतः डेटा को लॉग इन में ढक्कन किया जा सकता है या अस्पष्ट किया जा सकता है?)

यदि आप बग को "महत्वपूर्ण" या अन्य लोगों के लिए नहीं मानते हैं, तो वास्तव में आप के लिए न्याय करना असंभव है, जब तक आप यह नहीं जानते कि वास्तव में इसका कारण क्या होता है रिपोर्टिंग यह सूर्य के इंजीनियरों में कुछ महत्वपूर्ण कारणों का पता लगाने में पहला कदम हो सकता है।

पहला सवाल आपको खुद से पूछना चाहिए:

  • क्या मैं आधिकारिक रूप से समर्थित लिनक्स वितरण का उपयोग कर रहा हूं?

यदि नहीं, तो उस पर स्विच करें।

यदि आप कर रहे हैं, तो सूर्य को इसकी रिपोर्ट करें!