2012-02-21 14 views
13

मुझे वास्तव में निराशाजनक Silverlight प्लगइन क्रैश मिल रहा है जो आईई और फ़ायरफ़ॉक्स दोनों को प्रभावित करता है।सिल्वरलाइट 5 - डिबगिंग npctrl.dll क्रैश

ईवेंट लॉग से त्रुटि है:

Faulting application name: iexplore.exe, version: 9.0.8112.16421, time stamp: 0x4d76255d 
Faulting module name: npctrl.dll, version: 5.0.61118.0, time stamp: 0x4ec5fc64 
Exception code: 0xc0000094 
Fault offset: 0x0001d720 
Faulting process id: 0x434 
Faulting application start time: 0x01ccf0b878b55ca7 
Faulting application path: C:\Program Files (x86)\Internet Explorer\iexplore.exe 
Faulting module path: c:\Program Files (x86)\Microsoft Silverlight\5.0.61118.0\npctrl.dll 
Report Id: bd79af3d-5cab-11e1-8948-000c29de3e25 

मैं अपवाद दौरान WinDbg संलग्न थोड़ा और अधिक जानकारी प्राप्त करने के रूप में जहाँ तक मिल गया है:

(17e4.13f8): Break instruction exception - code 80000003 (first chance) 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\SYSTEM32\ntdll.dll - 
ntdll!DbgBreakPoint: 
00000000`77810530 cc    int  3 
0:029> g 
(17e4.1790): Integer divide-by-zero - code c0000094 (first chance) 
First chance exceptions are reported before any exception handling. 
This exception may be expected and handled. 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for NPCTRL.dll  - 
NPCTRL+0x1d720: 
7b59d720 f7f1   div  eax,ecx 

ठीक है, तो ntdll । डीएल शून्य से विभाजित है। मुझे वास्तव में कोई जानकारी नहीं है कि मैं आगे कैसे डिबग कर सकता हूं। मैंने कुछ लेख देखने की कोशिश की है जो बताते हैं कि कैसे - लेकिन मुझे लगता है कि मैं इस तथ्य के आधार पर सीमित हूं कि ntdll.dll के लिए कोई प्रतीक उपलब्ध नहीं है?

मैं कैसे कर सकता हूं कि मेरे कोड का कौन सा हिस्सा इस त्रुटि का कारण बन रहा है?

+0

क्या हम उस कोड को देख सकते हैं जहां क्रैश होता है? दुर्भाग्यवश, –

+0

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

+0

यदि आपको शून्य त्रुटि से विभाजित हो रहा है तो आपको कोड पोस्ट करना होगा, जहां कहीं भी एक अवैध मूल्य गुजर रहा है, या अमान्य मान hince पर किसी प्रकार की गणना को बदलने या करने की कोशिश कर रहा है DivideByZero त्रुटि उदाहरण के लिए त्रुटि 1/0 त्रुटि देगा .. – MethodMan

उत्तर

12

डीबगिंग के घंटे के बाद, मैं एक छोटे से परियोजना में समस्या को दोहराने में सक्षम था। बस 'Silverlight सक्षम वेब सेवा' बनाएं, और इसका संदर्भ लें। तब ग्राहक http ढेर का उपयोग कर के लिए स्विच:

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); 
WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp); 

मेरी मशीन पर सेवा (और साथ ही एक सहकर्मियों) है ntdll.dll त्रुटि के साथ दुर्घटनाग्रस्त की एक 10-15% मौका के बारे में कॉलिंग।

मुझे इस समस्या को कम करने के दो तरीके मिले।

1) क्लाइंट नेटवर्किंग स्टैक का उपयोग करना बंद करें। ब्राउजर स्टैक

2) के साथ समस्या कभी नहीं होती है 2) वीएमवेयर के बाहर चांदी के आवेदन को एक्सेस करें। समस्या केवल वर्चुअल मशीन के भीतर से होती है। यह पता लगाने के लिए RobSiklos के लिए धन्यवाद।

उम्मीद है कि यह किसी की मदद करेगा।

+0

मैंने एंड-यूजर रनटाइम को स्थापित करने का प्रयास किया लेकिन इससे – RobSiklos

+0

हां मदद नहीं मिली, हां, इससे मुझे मदद मिली - जब मैं इसे वीएम सर्वर पर चलाता हूं तो उसने SLLAuncher.exe में शून्य त्रुटि से एक विभाजन फेंक दिया - हालांकि इसे बाहरी कार्यों से ठीक से एक्सेस किया गया। – Rodney

+0

पूरी तरह से लम्बे! डब्ल्यूसीएफ सेवाओं को कॉल करते समय क्लाइंटहटप पर स्विच करने से अजीब, अड़चन त्रुटियों का समाधान हुआ था। – Pwninstein

0

ये विंडबग आदेश Microsoft के प्रतीक सर्वर से ntdll.dll (और अन्य Microsoft मॉड्यूल) के लिए प्रतीकों को लोड करेंगे।

.symfix

.reload/च

+0

ऐसा कुछ प्रतीत होता था .. लेकिन! विश्लेषण -v अभी भी बहुत बेकार था। –

1

क्या आप एक वीएमवेयर वर्चुअल मशीन के अंदर चल रहे हैं? यहाँ देखें: http://communities.vmware.com/thread/394306?tstart=0

अद्यतन (2013-03-15): मंच ऊपर लिंक सूत्र में नवीनतम पोस्ट के अनुसार, यह माइक्रोसॉफ्ट अंततः यह समस्या ठीक किया गया है लगता है।

+0

हां, ऐसा लगता है कि मैंने पर्यावरण में अंतर के संबंध में गलत निष्कर्ष निकाला था। –

+0

इस तथ्य को प्रतिबिंबित करने के लिए मेरा उत्तर अपडेट किया गया कि वीएमवेयर विकास एसडीएस/रनटाइम्स के बजाय एक कारण है। –

5

केवल 1 प्रोसेसर और समस्या का उपयोग करने के लिए Vmware वर्चुअल मशीन सेट करें पुन: उत्पन्न नहीं होगा। स्क्रीन के शीर्ष से वर्चुअल मशीन> वर्चुअल मशीन सेटिंग्स> प्रोसेसर -> प्रोसेसर कोर की संख्या = 1.

+0

यह मेरे लिए तय है! धन्यवाद! मुझे मैक ओएस एक्स पर क्रमशः आईई 9 और आईई 10 में विंडोज 7 और विंडोज 8 दोनों के साथ वीएमवेयर फ्यूजन चल रहा था। –

+0

यह मेरे लिए भी तय किया गया है। धन्यवाद – Bruno

+0

थाट ने मदद की। धन्यवाद! – Roberto

0

यदि आप वर्चुअल मशीन के भीतर चांदी की रोशनी एप्लिकेशन चला रहे हैं, तो आप वास्तव में वास्तव में हताश होने पर इसे आजमा सकते हैं और इसे काम करने की जरूरत है।

यदि आप एक ही वेबसाइट या उसी प्रक्रिया में अपने Silverlight एप्लिकेशन और डेटा प्रदाता चला रहे हैं, तो उन्हें विभाजित करने का प्रयास करें। मुझे समझाएं ...

मेरे आवेदन में 3 विकल्प थे, (1) प्रत्यक्ष डाटाबेस कनेक्शन (यहां लागू नहीं है), (2) वेब सेवा या (3) HTTP एएसपीएक्स पृष्ठ।

जब भी मैंने विकल्प 2 और 3 का उपयोग किया लेकिन प्रदाता को उसी साइट के भीतर से बुलाया, तो एप्लिकेशन जल्द ही क्रैश हो गया। मैंने देखा कि जब मैं एक ही डोमेन (क्रॉस-डोमेन) पर होस्ट की गई (या अलग) वेब सेवा को कॉल करता हूं, तो यह क्रैश नहीं होता है।

मेरा चांदी का प्रकाश आवेदन एक साथ चलने वाले धागे पर भारी निर्भर करता है। मुझे यकीन नहीं है कि क्या इसे धागे के साथ करना है या क्यों w3w प्रक्रिया और iexplore प्रक्रिया VM के अंदर अच्छी तरह से काम नहीं करती है।

मुझे "शून्य से विभाजन" त्रुटि भी मिली, लेकिन इस तरह मैंने इसे हल किया। तो, एक ही कोड, वही सबकुछ, सिवाय इसके कि सिल्वरलाइट एप्लिकेशन और इसकी होस्ट की गई वेबसाइट एक अलग वेबसाइट या वेब सेवा का उपयोग अपने डेटा स्रोत के रूप में करती है (भले ही वह डेटा स्रोत वेबसाइट एक ही वर्चुअल मशीन पर थी)

करता है यह समझ में आता है?

तो http://localhost/app.aspx में चल रहे एस/एल अनुप्रयोग https://itisqa-d1/folder1/service1.svc में चल रहे डब्ल्यूसीएफ सेवा का उपयोग करता है। और इस मामले में itisqa-d1 और localhost एक ही मशीन हो सकता है या नहीं, जब तक वे अलग-अलग ऐप डोमेन या पूल में चल रहे हों।

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