環境設定ファイルはどのようにして破損しますか?


10

私はいくつかの異なるトラブルシューティング記事とQ&Aを読みましたが、その原因はアプリケーションまたはプロセスの設定ファイルの破損です。通常、解決策は、不正な設定ファイルを削除し、動作に問題のあるソフトウェアを再起動すると、新しいデフォルトの設定ファイルが生成されるようにすることです。

環境設定ファイルはどのようにして破損しますか?これは単に低レベルの読み取り/書き込みエラーですか?それとも、場合によっては高レベルのエラーが発生していますか?XMLの形式が正しくないか、スペルが間違っているのですか?

私は信じているplutilファイルで構文エラーがあるかどうあなたを伝えることができますが、再び、どのようにエラーが導入されましたか?これらの破損したファイルの通常のソースは不明です。ありがとう。

回答:


6

これはさまざまな原因で発生する可能性がありますが、最も一般的な原因は、ファイルへの書き込みが原因であり、ファイルの書き込みが完了する前にアプリケーションが終了することです。これは、システムオーバーヘッドがその時点で正常に書き込みを行うには大きすぎるために発生した可能性があります。

ハードディスクまたはメモリのハードウェアエラーもデータエラーの原因となる可能性がありますが、この時点では、これらの問題はほとんど発生しないと思います。


4
私は懐疑的です。これが当てはまる場合、この明らかなバグを回避するために文字通り2語余分にかかるので、アプリは非常に不十分に書かれたに違いありません。Appleのplistを作成するためのサンプルコードでは、この方法を使用しています-writeToFile:atomically:YES(「データはバックアップファイルに書き込まれ、エラーが発生しないと仮定して、バックアップファイルは指定した名前に変更されます」)。POSIX rename()関数は、「システムが操作の途中でクラッシュした場合でも」ファイルが存在することを保証します。
ケン

3

ほとんどすべての場合で、plistファイルに構文上の問題はないはずです。plistデータをロードおよび保存するためのAppleの機能は、多くの注目を集め、多くの用途があります。ほぼすべてのバグが確実に発見され、修正されています。

(plistは、ドラッグアンドドロップやクリップボード、アプリを起動するためのサンドボックスのアクセス許可、すべてのアプリのユーザーインターフェイス、Finderに表示するアイコンなど、あらゆる種類のものに使用されることを考慮してください。 plistを作成するコードにバグがあり、たまたま一部のアプリの設定ファイルを台無しにしてしまったが、他のアプリでは失敗しなかった!)

アプリの設定ファイル(plist)は、メモリ内のデータ構造の一部をディスクに格納するだけです。したがって、アプリに何かが正しく設定されない原因となるバグがある場合、アプリは保存されます。

多くの場合、アプリが不正な動作を始めたら、単に終了して再起動するだけです。これで多くの部分がリセットされ、問題が解決する可能性があります。ただし、設定ファイルはディスクから再読み込みされるため、アプリの影響を受ける部分が永続的な設定で保存されている場合、アプリを再起動しても影響はありません。不正な値が再度読み込まれるだけです。これは、設定ファイルを削除することが役立つ場合です。それはアプリを再起動するようなものですが、保存されたもののためのものです。

これらのことは、プログラマが自分のアプリが持っているデータが正しいと想定しているために起こります。ユーザーが標準のカラーホイールコントロールをクリックすることによってのみ色を選択できる場合、おそらくそれを使用する前に、色が正しいことを確認するための追加の作業は行いません。(比較すると、Safariのようなアプリはありませんトン、それをロードして実行ファイルを直接インターネットオフするので、すべてを検証する余分な作業のを。)

利点は、ほとんど常に正しいことであり、内部の値が正しいと仮定すると、はるかに簡単です。悪い点は、悪い値が何らかの形で忍び込んだ場合(ユーザーがまったく予期しないことをした場合など)、すべてがリセットされるまで事態が混乱する可能性があることです。


それは面白い。問題は一般にアプリ固有であり、悪い値を設定して後で使用する前に検証できないバグまたは見落としに関係していると言っています。plistの読み取り/書き込みや一般的な処理ではありません。Dock(apple.stackexchange.com/questions/33950/…)と同じくらい一般的(かつ公式)なものに問題があるのは奇妙なことですが、おそらくそれは例外であり、実際には読み取り/書き込みエラーです。
wxs 2012

ウォーカー:誰かがこれらの破損したDock plistファイルの1つを持っている場合は、簡単に確認できます。私のお金はまだアプリ(システム環境設定またはDock)のバグにあり、plistコードではありません。
Ken

1

技術的な問題を抱えた高齢者として、iTunesプリファレンスファイルが破損していて、iTunesを開くたびにライセンス契約が発生することに気付きました。さらに、すべての設定をリセットする必要がありました。上記の答えは正しいと思います。この問題が発生する直前に、コンピューターの強制シャットダウン(その地域の電気的な問題)と何度か再起動/半再起動を強制されました。命令/書き込みが完了する前にアプリケーションが終了しました。しかし、新しいiTunes設定ファイルを生成するための修正はオンラインで表示され、実行は非常に簡単でした。問題を修正しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.