वरीयता फाइलें कैसे भ्रष्ट हो जाती हैं?


10

मैंने कुछ अलग समस्या निवारण लेख पढ़े हैं और Q & A की वह जगह है जहाँ अपराधी एक आवेदन या प्रक्रिया के लिए एक दूषित वरीयता फ़ाइल है। आमतौर पर समाधान खराब वरीयता फ़ाइल को हटाने के लिए है और जो भी सॉफ़्टवेयर दुर्व्यवहार कर रहा था, उसे पुनरारंभ करने पर एक नई, डिफ़ॉल्ट प्राथमिकता फ़ाइल की अनुमति दी जाएगी।

वरीयता फ़ाइल दूषित कैसे हो जाती है? क्या यह केवल एक निम्न-स्तरीय पढ़ने / लिखने की त्रुटि है, या कुछ मामलों में उच्च स्तर की त्रुटि है? क्या यह सिर्फ विकृत या गलत वर्तनी वाला XML है?

मुझे विश्वास है plutilकि आपको बता सकता है कि क्या फ़ाइल के साथ एक वाक्यात्मक त्रुटि है, लेकिन फिर से, त्रुटि कैसे पेश की गई? मैं इन दूषित फ़ाइलों के लिए सामान्य स्रोत पर अस्पष्ट हूं। धन्यवाद।

जवाबों:


6

यह बड़ी संख्या में चीजों के कारण हो सकता है, लेकिन मेरा मानना ​​है कि सबसे सामान्य कारण वह है जहां फ़ाइल को लिखा जा रहा है, और फ़ाइल समाप्त करने से पहले आवेदन समाप्त हो जाता है। यह उस समय के सफल लेखन के लिए सिस्टम ओवरहेड्स के बहुत अधिक होने के कारण हो सकता है।

हार्ड डिस्क, या मेमोरी के साथ हार्डवेयर त्रुटियां भी डेटा त्रुटियों का कारण बन सकती हैं, लेकिन मुझे लगता है कि इस समय तक ये आपकी कम से कम समस्याएं होंगी।


4
मुझे संदेह है। अगर ऐसा है, तो ऐप को बहुत खराब तरीके से लिखा जाना चाहिए, क्योंकि इस स्पष्ट बग से बचने के लिए शाब्दिक 2 अतिरिक्त शब्द लगते हैं। प्लिस्ट लिखने के लिए ऐप्पल का नमूना कोड विधि का उपयोग करता है -writeToFile:atomically:YES("डेटा एक बैकअप फ़ाइल के लिए लिखा गया है, और फिर - कोई त्रुटि नहीं होती है, यह मानते हुए - बैकअप फ़ाइल का नाम निर्दिष्ट किया गया है")। POSIX rename()फ़ंक्शन गारंटी देता है कि फ़ाइल मौजूद होगी "भले ही सिस्टम को ऑपरेशन के बीच में क्रैश होना चाहिए"।
केन

3

मैं शर्त लगाता हूं कि लगभग हर मामले में, plist फ़ाइल में कुछ भी गलत नहीं है। प्लिस्ट डेटा को लोड करने और सहेजने के लिए ऐप्पल के कार्यों को बहुत ध्यान और बहुत अधिक उपयोग मिलता है। लगभग हर बग अब तक निश्चित रूप से पाया और तय किया गया है।

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

एक ऐप की वरीयता फ़ाइल (प्लिस्ट) बस डिस्क पर इसकी कुछ मेमोरी मेमोरी संरचनाओं को संग्रहीत कर रही है। इसलिए अगर ऐप में बग है जो किसी चीज को गलत तरीके से सेट करता है, तो वह सेव हो जाता है।

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

ये चीजें हो सकती हैं क्योंकि प्रोग्रामर यह मानते हैं कि उनके ऐप का डेटा सही है। यदि एक रंग को केवल मानक रंग पहिया नियंत्रण पर क्लिक करने वाले उपयोगकर्ता द्वारा चुना जा सकता है, तो वे संभवतः यह सत्यापित करने के लिए कोई अतिरिक्त कार्य नहीं करते हैं कि इसका उपयोग करने के लिए यह सही है। (तुलना में, सफ़ारी जैसी ऐप हर काम को सत्यापित करने का एक टन अतिरिक्त काम करती है, क्योंकि यह फाइलों को इंटरनेट से सीधे लोड और चलाता है।)

उल्टा यह है कि यह लगभग हमेशा सही होता है, और यह बहुत आसान है यदि आप मानते हैं कि आंतरिक मूल्य सही हैं। नकारात्मक पक्ष यह है कि यदि कोई खराब मान किसी तरह से बोलता है (जैसे उपयोगकर्ता ने पूरी तरह से अनपेक्षित किया था), तो सब कुछ रीसेट होने तक चीजें गर्म हो सकती हैं।


यह तो दिलचस्प है। आप कह रहे हैं कि समस्या आम तौर पर एप्लिकेशन-विशिष्ट है और बग या ओवरसाइट के साथ करना है जो खराब मानों को सेट करने और बाद में उपयोग करने से पहले सत्यापित करने की अनुमति देता है, न कि किसी भी रीड / राइट या प्लिस्ट के सामान्य हैंडलिंग के साथ। यह अब भी मुझे अजीब लगता है, क्योंकि डॉक ( Apple.stackexchange.com/questions/33950/… ) के रूप में आम (और आधिकारिक) के रूप में कुछ समस्या होगी, हालांकि शायद यह एक अपवाद है और वास्तव में एक पढ़ने / लिखने की त्रुटि है।
wxs

वॉकर: यदि किसी के पास इन भ्रष्ट डॉक प्लिस्ट फ़ाइलों में से एक है, तो यह जांचना आसान है। मेरा पैसा अभी भी एप्लिकेशन (सिस्टम प्राथमिकता या डॉक) में बग पर है, न कि plist कोड पर।
केन

1

एक तकनीकी-चुनौती वाले वरिष्ठ नागरिक के रूप में, मैंने पाया कि मेरी आईट्यून्स वरीयता फ़ाइल दूषित हो गई थी और हर बार जब मैंने आईट्यून्स खोला, तो लाइसेंसिंग समझौता हुआ। साथ ही, मेरी सभी प्राथमिकताओं को रीसेट करना पड़ा। मेरा मानना ​​है कि उपरोक्त उत्तर सही हैं, क्योंकि इससे पहले कि मेरे पास यह मुद्दा था, मुझे अपने कंप्यूटर (क्षेत्र में बिजली के मुद्दे) के जबरन शटडाउन करने और कई बार रिबूट करने / आधा रिबूट करने के लिए मजबूर किया गया था। निर्देश / लेखन पूरा होने से पहले समाप्त किए गए आवेदन। लेकिन एक नए आईट्यून्स वरीयता फ़ाइल को ठीक करने के लिए ऑनलाइन और बहुत आसान करने के लिए दिखाया गया था। इसने समस्या को ठीक कर दिया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.