2012-07-04 15 views
7

मेरे पास जावा 1.6 एप्लिकेशन है जो इंटरफ़ेस के रूप में प्रदान किए गए जेएनआई क्लास के माध्यम से किसी तृतीय पक्ष देशी मॉड्यूल तक पहुंचता है। हाल ही में हमने देखा है कि देशी मॉड्यूल में एक SEGFAULT हो रहा है, और हमारे एप्लिकेशन को क्रैश होने का कारण बन रहा है। क्या इस घटना को पकड़ना और संभालना संभव है, कम से कम मरने से पहले इसे ठीक से लॉग इन करना?क्या मूल कोड में सेगफाल्ट ऑर्गेनेटिंग को संभालना संभव है?


मैंने kjp's answer से लेख में जावा तकनीक दोनों की कोशिश की। न तो काम किया। अपवाद

सिग्नल पहले से ही वी एम द्वारा प्रयोग किया जाता में 'SEGV' परिणामों पर एक signal handler स्थापित करने के लिए प्रयास कर रहा है:

SEGV shutdown handler मैं स्थापित बस शायद क्या IBM article राज्यों की वजह से आग में विफल:

शटडाउन हुक अगर

Runtime.halt() विधि समाप्त करने के लिए कहा जाता है नहीं चलाया जाएगा जेवीएम Runtime.halt() को JVM के त्वरित शटडाउन की अनुमति देने के लिए प्रदान किया जाता है।
-Xrs JVM विकल्प निर्दिष्ट है।
जेवीएम असामान्य रूप से बाहर निकलता है, जैसे अपवाद स्थिति या जेवीएम सॉफ़्टवेयर द्वारा उत्पन्न मजबूर गर्भपात।

+0

देशी कोड के लिए सार्वजनिक डिबगिंग प्रतीक उपलब्ध हैं? यदि आप यह क्यों कर रहे हैं के बारे में अधिक जानकारी प्राप्त कर सकते हैं, तो आप उन्हें अपनी लाइब्रेरी को ठीक करने के लिए एक व्यापक पर्याप्त बग रिपोर्ट सबमिट करने में सक्षम हो सकते हैं। – Benj

+0

@ बेंज समानांतर में उस पर काम कर रहा है। वे चाहते हैं की तुलना में अधिक जानकारी प्राप्त हो जाएगा। बैकअप योजना होने की उम्मीद थी। –

+0

आप किस ओएस पर चल रहे हैं? – Benj

उत्तर

2

यदि आप जो करना चाहते हैं वह लॉग है और सूचित करें कि आप एक स्क्रिप्ट लिख सकते हैं जो आपके आवेदन को चलाता है। जब आवेदन मर जाता है, स्क्रिप्ट का पता लगा सकते हैं कि क्या आवेदन सामान्य रूप से और जो सभी दुर्घटना/SEGV जानकारी नहीं है hs_errXXXX फ़ाइल से समाप्त और किसी को मेल (और अगर आप चाहते हैं अनुप्रयोग फिर से आरंभ)


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

+1

ऐसा करने के साथ कुछ महत्वपूर्ण प्रदर्शन प्रभाव ... मुझे इस तरह से जाने के लिए प्रेरित करने का एकमात्र विकल्प होना होगा। – Benj

1

उस समय के कई हफ्तों के शोध के साथ-साथ एक सम्मेलन में जेवीएम इंजीनियरों के साथ वार्तालापों के आधार पर यह संभव नहीं है। सिस्टम आपको एसईजीवी सिग्नल पर सिग्नल हैंडलर स्थापित करने नहीं देगा।