2013-08-10 10 views
9

के विभिन्न संस्करणों पर मेरे सहकर्मी और मुझे एंड्रॉइड Canvas ऑब्जेक्ट के साथ बहुत अजीब व्यवहार का सामना करना पड़ रहा है।एंड्रॉइड घातक सिग्नल त्रुटि 11 SIGSEGV जेलीबीन

हम प्रारंभिक कैनवास ऑब्जेक्ट से निपट रहे हैं और चुनिंदा घातक सिग्नल प्राप्त कर रहे हैं 11 2 नेक्सस 7 टैबलेट के बीच त्रुटि; जिसमें से एक 4.2.2 चलाता है और ठीक काम करता है, और दूसरा जो 4.3 और क्रैश चलाता है। हम यह समझने की कोशिश कर रहे हैं कि समस्या का निवारण कैसे करें, जिसमें यह निर्धारित करना शामिल है कि त्रुटि हमारे हिस्से पर है या किसी भी तरह से एंड्रॉइड एपीआई (संभावना नहीं है) में एक गड़बड़ है।

त्रुटि तब होती है जब हम ऑब्जेक्ट पर canvas.getWidth() पर कॉल करने का प्रयास करते हैं।

हमारे जावा कोड: (नहीं कि यह शायद मामलों लेकिन रेक्ट हमारे codebase से है, यह नहीं है एक android.graphics.Rect)


public Rect getViewportBounds() { 
    Canvas can = _diagram._canvas; 
    Rect vb = _viewportBounds; 
    if (can == null) return vb; 
    Point pos = _position; 
    int[] approxWindowVals = { (int) pos.getX(), (int) pos.getY() }; 
    double sc = _scale; 
    vb._set(approxWindowVals[0], approxWindowVals[1], Math.max(can.getWidth(), 0)/sc, Math.max(can.getHeight(), 0)/sc); 
    return vb; 
} 

LogCat से हमारी जानकारी यहाँ है

 
08-09 16:49:14.883: W/View(4083): requestLayout() improperly called by com.nwoods.go.Viewport{41dfcb08 V.ED.... ......I. 0,0-0,0} during layout: running second layout pass 
08-09 16:49:14.893: W/View(4083): requestLayout() improperly called by com.nwoods.go.Viewport{41dfcb08 V.ED.... ......I. 0,0-0,0} during second layout pass: posting in next frame 
08-09 16:49:14.923: W/View(4083): requestLayout() improperly called by com.nwoods.go.Viewport{41dfcb08 V.ED.... ......I. 0,0-0,0} during layout: running second layout pass 
08-09 16:49:14.943: D/abc(4083): onDraw 
08-09 16:49:14.943: W/View(4083): requestLayout() improperly called by com.nwoods.go.Viewport{41dfcb08 V.ED.... ......I. 0,0-0,0} during second layout pass: posting in next frame 
08-09 16:49:14.973: W/View(4083): requestLayout() improperly called by com.nwoods.go.Viewport{41dfcb08 V.ED.... ......I. 0,0-0,0} during layout: running second layout pass 
08-09 16:49:14.983: W/View(4083): requestLayout() improperly called by com.nwoods.go.Viewport{41dfcb08 V.ED.... ......I. 0,0-0,0} during second layout pass: posting in next frame 
08-09 16:49:15.003: W/View(4083): requestLayout() improperly called by com.nwoods.go.Viewport{41dfcb08 V.ED.... ......I. 0,0-0,0} during layout: running second layout pass 
08-09 16:49:15.033: A/libc(4083): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 4083 (egressiontester) 

हमारे हार्डवेयर कॉन्फ़िगरेशन निम्नानुसार हैं:

 
+---------+------------+-----------------------+ 
| Tablet | Android OS |  Reached Error  | 
+---------+------------+-----------------------+ 
| Nexus 7 | 4.2.2  | NO     | 
| Nexus 7 | 4.3  | YES     | 
+---------+------------+-----------------------+ 

यदि आपको कोई विचार है कि यह क्यों हो रहा है तो कृपया मुझे बताएं। हमें कैनवास को पुन: व्यवस्थित करना पड़ सकता है, लेकिन हम दोनों बहुत उलझन में हैं कि कैनवास के समान सामान्य वर्ग दो समान टैबलेट पर अलग-अलग व्यवहार कर रहा है।

आप अपने समर्थन :)

+2

क्या आप हार्डवेयर त्वरित कैनवास का उपयोग करते हैं? क्या आपने हार्डवेयर त्वरण चालू/बंद करने की कोशिश की है? –

+0

@ AndrzejDuś, हार्डवेयर त्वरण शुरू में बंद कर दिया गया था, और ** इसे चालू करने से ** समस्या हल हो गई, हालांकि हम कक्षा पुस्तकालय विकसित कर रहे हैं और इसलिए हमें जितने संभव हो उतने उपयोगकर्ताओं के लिए कोड लिखना होगा और मामलों का उपयोग करना होगा। –

उत्तर

1

बदलते ध्वज को मेरे लिए इस मुद्दे को हल करने के लिए दूसरे लेआउट पास पर प्रतिपादन नहीं किया गया है।

+0

स्टैक ओवरफ़्लो में आपका स्वागत है! कृपया जवाब के रूप में "धन्यवाद" न जोड़ें। साइट पर कुछ समय निवेश करें और आपको धन्यवाद देने के लिए पर्याप्त [विशेषाधिकार] (http://stackoverflow.com/privileges) प्राप्त होंगे, जो आपको धन्यवाद देने का स्टैक ओवरफ़्लो तरीका है। –

0

के लिए बहुत-बहुत धन्यवाद हम बस इसे उपयोग करने के बाद अशक्त करने के लिए हमारे कैनवास वस्तु बताए द्वारा इस समस्या का समाधान हो। हुड के तहत शायद एंड्रॉइड एपीआई को इसे मान्य पता के साथ पुन: प्रारंभ करने का कारण बन गया।

समस्या हल हो गई है, लेकिन तथ्य यह है कि पता समस्या 4.2.2 पर पूरी तरह से हल हो गई है और 4.3 पर नहीं, शायद एक बग है और आगे शोध किया जाना चाहिए।

+0

अगर आपको लगता है कि यह एंड्रॉइड में एक बग है, तो एंड्रॉइड बग ट्रैकर पर इसकी रिपोर्ट करें। अभी, आप अकेले हैं जो इसे आगे खोज सकते हैं: किसी और के पास पुन: उत्पन्न करने के लिए एक ही कोड या निर्देश नहीं हैं। –

+0

यह एक बग नहीं है। आपको 'कैनवास' का संदर्भ नहीं रखना चाहिए। इसके अलावा, आपको शायद 'Canvas.getWidth' का उपयोग नहीं करना चाहिए क्योंकि इसका एक अलग-अलग अर्थ है कि यह एक हार्डवेयर-त्वरित दृश्य है या नहीं (पूर्ण विंडो आकार बनाम केवल आकार देखें) – Delyan

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