कई स्टैक ओवरफ्लो प्रश्नों पर टिप्पणियों ने इंगित किया है कि deadd00d का एक गलती पता एक जानबूझकर वीएम निरस्तक इंगित करता है।एंड्रॉइड जेएनआई: रूट-कारण deadd00d (dvmAbort)
I DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
और वास्तव में, जब NDK-ढेर के माध्यम से लॉग चल रहा है, मैं देख रहा हूँ स्टैक फ्रेम के शीर्ष डीकोड कि करने के लिए:
Stack frame #00 pc 00050b0e /system/lib/libdvm.so (dvmAbort)
तो टिप्पणी के लिए अपने लॉग में पहले देखने के लिए कहते हैं मुसीबत। मैं वास्तव में क्या देख रहा हूं - क्या कोई विशेष टैग या स्ट्रिंग खोजने के लिए है? (dalvikvm शायद?) मैंने कुछ भी प्रासंगिक खोज किए बिना लॉग के कई पृष्ठों के माध्यम से स्क्रॉल किया है - क्या यह सामान्य है, या यह गलती से ठीक पहले होना चाहिए?
deadd00d अक्सर GetObjectClass() को किसी विशेष कॉल के अंदर होता है। मैंने env-> अपवाद को उस पंक्ति से ठीक पहले जांचने का प्रयास किया है, लेकिन यह किसी भी पूर्व त्रुटियों की रिपोर्ट नहीं करता है।
मैं भी
adb shell setprop debug.checkjni 1
निर्देश
here प्रति
और here, लेकिन जब मारे गए और फिर से शुरू अनुप्रयोग, मैं उम्मीद संदेश दिखाई नहीं देता साथ CheckJNI को चालू करने की कोशिश की है
D Late-enabling CheckJNI
बल्कि
D AndroidRuntime: CheckJNI is OFF
का उपयोग करनाइंगित करता है कि संपत्ति वास्तव में चालू है, इसलिए मुझे यकीन नहीं है कि वहां क्या हो रहा है।