Wie werden Einstellungsdateien beschädigt?

10

Ich habe einige verschiedene Artikel zur Fehlerbehebung und Fragen und Antworten gelesen, in denen der Schuldige eine beschädigte Einstellungsdatei für eine Anwendung oder einen Prozess ist. In der Regel besteht die Lösung darin, die Datei mit den fehlerhaften Einstellungen zu löschen und zuzulassen, dass beim Neustart der Software, die sich schlecht verhält, eine neue Standardeinstellungsdatei erstellt wird.

Wie wird eine Einstellungsdatei beschädigt? Handelt es sich lediglich um einen Lese- / Schreibfehler auf niedriger Ebene, oder tritt in einigen Fällen ein Fehler auf höherer Ebene auf? Ist es nur fehlerhaftes oder falsch geschriebenes XML?

Ich glaube, ich plutilkönnte Ihnen sagen, ob es einen syntaktischen Fehler in der Datei gibt, aber wie wurde der Fehler eingeführt? Ich bin mir nicht sicher, aus welcher Quelle diese beschädigten Dateien stammen. Vielen Dank.

wxs
quelle

Antworten:

6

Es kann durch eine Vielzahl von Dingen verursacht werden, aber ich glaube, die häufigste Ursache ist, wo die Datei geschrieben wird und die Anwendung beendet wird, bevor das Schreiben der Datei abgeschlossen ist. Dies kann dadurch verursacht werden, dass der System-Overhead für ein erfolgreiches Schreiben zu groß ist.

Hardwarefehler mit der Festplatte oder dem Speicher können ebenfalls Datenfehler verursachen, aber ich würde mir vorstellen, dass dies zu diesem Zeitpunkt das geringste Ihrer Probleme ist.

AlanJC
quelle
4
Ich bin skeptisch. Wenn dies jemals der Fall ist, muss die App sehr schlecht geschrieben worden sein, da buchstäblich 2 zusätzliche Wörter erforderlich sind, um diesen offensichtlichen Fehler zu vermeiden. Apples Beispielcode zum Schreiben einer Liste verwendet die Methode -writeToFile:atomically:YES("Die Daten werden in eine Sicherungsdatei geschrieben, und dann wird - sofern keine Fehler auftreten - die Sicherungsdatei in den angegebenen Namen umbenannt"). Die POSIX- rename()Funktion garantiert, dass die Datei "auch dann vorhanden ist, wenn das System mitten im Vorgang abstürzt".
Ken
3

Ich würde wetten, dass in fast allen Fällen nichts syntaktisch an der plist-Datei falsch ist. Die Funktionen von Apple zum Laden und Speichern von Plist-Daten finden viel Beachtung und werden häufig verwendet. Fast jeder Fehler wurde inzwischen gefunden und behoben.

(Bedenken Sie, dass Plists für alle Arten von Dingen verwendet werden, wie Drag & Drop und die Zwischenablage, Sandbox-Berechtigungen zum Starten von Apps, die Benutzeroberflächen für jede App und sogar das Symbol, das im Finder angezeigt werden soll. Es wäre unglaublich, wenn Es gab einen Fehler im Plist-Writing-Code, der zufällig die Einstellungsdateien für einige Apps vermasselte, aber keines dieser anderen Dinge!)

In der Einstellungsdatei (plist) einer App werden einfach einige ihrer speicherinternen Datenstrukturen auf der Festplatte gespeichert. Wenn die App also einen Fehler aufweist, der dazu führt, dass etwas falsch eingestellt wird, wird sie gespeichert.

Wenn sich eine App schlecht benimmt, können Sie sie häufig einfach beenden und neu starten. Dadurch werden viele Teile davon zurückgesetzt und das Problem möglicherweise behoben. Einstellungsdateien werden jedoch von der Festplatte neu geladen. Wenn also der betroffene Teil der App in einer dauerhaften Voreinstellung gespeichert wurde, hat ein Neustart der App keine Auswirkungen: Der fehlerhafte Wert wird nur erneut geladen. In diesem Fall kann das Löschen der Voreinstellungsdatei hilfreich sein. Es ist wie ein Neustart der App, aber für Dinge, die gespeichert wurden.

Diese Dinge können passieren, weil Programmierer davon ausgehen, dass die Daten in ihrer App korrekt sind. Wenn eine Farbe nur vom Benutzer ausgewählt werden kann, der auf ein Standard-Farbradsteuerelement klickt, führt er wahrscheinlich keine zusätzlichen Arbeiten durch, um zu überprüfen, ob sie korrekt ist, bevor er sie verwendet. (Im Vergleich dazu eine App wie Safari hat eine Tonne zusätzlicher Arbeit alles zu überprüfen, denn es lädt und laufen Dateien direkt aus dem Internet.)

Der Vorteil ist, dass es fast immer korrekt ist und es viel einfacher ist, wenn Sie davon ausgehen, dass die internen Werte korrekt sind. Der Nachteil ist, dass, wenn sich ein schlechter Wert irgendwie einschleicht (wie der Benutzer etwas völlig Unerwartetes getan hat), die Dinge durcheinander geraten können, bis alles zurückgesetzt ist.

Ken
quelle
Das ist interessant. Sie sagen, das Problem ist im Allgemeinen app-spezifisch und hat mit einem Fehler oder Versehen zu tun, durch das schlechte Werte festgelegt und vor der späteren Verwendung nicht überprüft werden können, nicht mit Lesen / Schreiben oder allgemeiner Handhabung der Liste. Es kommt mir immer noch so seltsam vor, dass etwas so Häufiges (und Offizielles) wie Dock ( apple.stackexchange.com/questions/33950/… ) ein Problem haben würde, obwohl dies vielleicht eine Ausnahme ist und wirklich ein Lese- / Schreibfehler ist.
wxs
Walker: Wenn jemand eine dieser beschädigten Dock-Plist-Dateien hat, ist dies leicht zu überprüfen. Mein Geld ist immer noch auf einen Fehler in der App (Systemeinstellungen oder Dock) zurückzuführen, nicht auf den Plist-Code.
Ken
1

Als technisch anspruchsvoller Senior stellte ich fest, dass meine iTunes-Einstellungsdatei beschädigt war und die Lizenzvereinbarung bei jedem Öffnen von iTunes zustande kam. Außerdem mussten alle meine Einstellungen zurückgesetzt werden. Ich glaube, die obigen Antworten sind richtig, da ich kurz vor diesem Problem gezwungen war, meinen Computer zwangsweise herunterzufahren (elektrische Probleme in der Umgebung) und mehrmals neu zu starten / halb neu zu starten. Die Anträge wurden beendet, bevor die Anweisungen / das Schreiben abgeschlossen waren. Das Update zum Erstellen einer neuen iTunes-Voreinstellungsdatei wurde jedoch online angezeigt und war sehr einfach durchzuführen. Es hat das Problem behoben.

Bob Foss
quelle