java - जेएनए कारण EXCEPTION_ACCESS_VIOLATION?




jni awt (3)

के आधार पर निर्णय लेना:

Stack: [0x02eb0000,0x02f00000], sp=0x02eff4a4, free space=317k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [awt.dll+0x2bcbd]

(जिस बिंदु पर स्टैक ट्रेस जाहिरा तौर पर उड़ा दिया गया था) आप एडब्ल्यूटी पुस्तकालय में एक बग मार सकते हैं।

मेरा जावा यूआई अनपेक्षित रूप से समाप्त हुआ और एक hs_err_pid फ़ाइल को हटा दिया। फाइल का कहना है "दुर्घटना स्थानीय आबादी कोड में जावा वर्चुअल मशीन के बाहर हुई थी।" जेएनए केवल एकमात्र मूल कोड है जो हम उपयोग करते हैं। क्या किसी को पता है कि किसी भी जेएनए संस्करण के साथ मुद्दों या बगों को पता है जो इसका कारण हो सकता है मैंने नीचे त्रुटि फ़ाइल से कुछ सामग्री को शामिल किया है I

An unexpected error has been detected by Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d02bcbd, pid=312, tid=3616

 Java VM: Java HotSpot(TM) Client VM (11.0-b16 mixed mode, sharing windows-x86)<br>
 Problematic frame:
 C  [awt.dll+0x2bcbd]

 If you would like to submit a bug report, please visit:
   http://java.sun.com/webapps/bugreport/crash.jsp
 The crash happened outside the Java Virtual Machine in native code.
 See problematic frame for where to report the bug.

Current thread (0x02acf000):  JavaThread "AWT-Windows" daemon [_thread_in_native, id=3616, stack(0x02eb0000,0x02f00000)]

siginfo: ExceptionCode=0xc0000005, writing address 0xe2789280


Registers:
EAX=0x234f099c, EBX=0x00001400, ECX=0x00000100, EDX=0xe2789280
ESP=0x02eff4a4, EBP=0x00000400, ESI=0x234f099c, EDI=0xe2789280
EIP=0x6d02bcbd, EFLAGS=0x00010206

Top of Stack: (sp=0x02eff4a4)
0x02eff4a4:   02eff500 00000100 02eff584 00000100
0x02eff4b4:   6d0a5697 00000400 00000400 00000100
0x02eff4c4:   00000100 02eff700 02eff500 00000000
0x02eff4d4:   00000000 00000100 041ac3a0 00000100
0x02eff4e4:   00182620 00000400 e2789280 00000000
0x02eff4f4:   00000000 00000100 00000100 00000000
0x02eff504:   00000000 00000100 00000100 00000000
0x02eff514:   00000000 00000004 00000400 00000000

Instructions: (pc=0x6d02bcbd)
0x6d02bcad:   00 00 00 8b 4c 24 14 8b e9 c1 e9 02 8b f0 8b fa
0x6d02bcbd:   f3 a5 8b cd 83 e1 03 f3 a4 8b 74 24 18 8b 4c 24

Stack: [0x02eb0000,0x02f00000],  sp=0x02eff4a4,  free space=317k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [awt.dll+0x2bcbd]

[error occurred during error reporting (printing native stack), id 0xc0000005]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  sun.awt.windows.WToolkit.eventLoop()V+0
j  sun.awt.windows.WToolkit.run()V+69
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub

आपने एक उल्लंघन का उल्लंघन किया है, जिसका अर्थ है कि कुछ कोड उस पते तक पहुंचने का प्रयास करता है जिसे उसे अनुमति नहीं है, क्योंकि अक्सर दिए गए पते पर कोई मेमोरी नहीं है। स्टैकेट्र्रेस उस स्थान को इंगित करता है जो समस्या पर फिसल जाता है, जो कि समस्या का स्रोत या हो सकता है न हो। लोग कभी-कभी इस बारे में भूल जाते हैं जब मूल कोड के बारे में बात करते हैं, भले ही वे इसके बारे में अन्यथा जानते हों

मैंने जेएनए का इस्तेमाल किया है, लेकिन इसके साथ कभी कोई मुद्दा नहीं था। अगर प्रवेश का उल्लंघन हुआ तो मेरी गलती थी यहाँ कुछ सरल सलाह है

सुनिश्चित करें कि आपका मशीन शारीरिक रूप से ध्वनि है Memtest86 + के साथ अपनी मेमोरी का परीक्षण करें अगर कोई हार्डवेयर समस्या है, तो सॉफ्टवेयर बग का शिकार करने में कोई फायदा नहीं है I

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

अन्य कारकों को पूरी तरह से नकार दें यह अच्छी तरह से हो सकता है कि आप एक जेवीएम बग मारा या कुछ और, लेकिन सावधान रहें कि यह कैसा है। अगर आप झुंझलाहट सुनाते हैं, तो घोड़े सोचें, ज़ेबरा नहीं।


मैं बस इतना ही बग मारा, यह नया प्रत्यक्ष 3 डी में त्वरित रूप से एक बग है, जो कि 1.6.0_11 के साथ त्वरित गति वाले जावा 2 डी कार्यक्षमता है, जो कम वीडियो राम के साथ मशीनों के साथ होता है। यदि आप अपना ऐप- Dsun.java2d.d3d = false के साथ शुरू करते हैं, तो उसे फिर से काम करना चाहिए। इस पर नज़र रखने वाला सूर्य बग है: http://bugs.sun.com/view_bug.do?bug_id=6788497