¿Cómo se corrompen los archivos de preferencias?


10

He leído algunos artículos de solución de problemas diferentes y preguntas y respuestas donde el culpable es un archivo de preferencias corrupto para una aplicación o proceso. Por lo general, la solución es eliminar el archivo de preferencias erróneas y permitir que se genere un nuevo archivo de preferencias predeterminado al reiniciar cualquier software que se esté comportando mal.

¿Cómo se corrompe un archivo de preferencias? ¿Es esto simplemente un error de lectura / escritura de bajo nivel, o hay un error de nivel superior en algunos casos? ¿Es solo XML mal formado o mal escrito?

Creo que plutilpodría decirte si hay un error sintáctico con el archivo, pero de nuevo, ¿cómo se introdujo el error? No tengo claro el origen habitual de estos archivos corruptos. Gracias.

Respuestas:


6

Puede ser causado por una gran cantidad de cosas, pero creo que la causa más común es dónde se está escribiendo el archivo, y la aplicación finaliza antes de que termine de escribir el archivo. Esto podría deberse a que los gastos generales del sistema son demasiado grandes para una escritura exitosa en ese momento.

Los errores de hardware con el disco duro o la memoria también pueden causar errores de datos, pero me imagino que estos serían los problemas menores para este momento.


44
Soy escéptico Si ese es el caso, la aplicación debe haber sido mal escrita, ya que se necesitan literalmente 2 palabras adicionales para evitar este error obvio. El código de muestra de Apple para escribir un plist utiliza el método -writeToFile:atomically:YES("los datos se escriben en un archivo de respaldo y luego, suponiendo que no ocurran errores, el archivo de respaldo se renombra con el nombre especificado"). La rename()función POSIX garantiza que el archivo existirá "incluso si el sistema se bloquea en el medio de la operación".
Ken

3

Apuesto a que en casi todos los casos, no hay nada sintácticamente incorrecto con el archivo plist. Las funciones de Apple para cargar y guardar datos de plist reciben mucha atención y mucho uso. Casi todos los errores seguramente se han encontrado y corregido por ahora.

(Tenga en cuenta que las listas se utilizan para todo tipo de cosas, como arrastrar y soltar y el portapapeles, permisos de sandbox para iniciar aplicaciones, las interfaces de usuario para cada aplicación e incluso qué icono mostrar en el Finder. Sería increíble si hubo un error en el código de escritura simple que simplemente estropeó los archivos de preferencias para algunas aplicaciones, ¡pero no ninguna de estas otras cosas!)

El archivo de preferencias de una aplicación (plist) simplemente almacena algunas de sus estructuras de datos en memoria en el disco. Entonces, si la aplicación tiene un error que hace que algo se configure incorrectamente, se guarda.

A menudo, cuando una aplicación comienza a comportarse mal, simplemente puede salir y reiniciar. Eso restablece muchas partes y puede solucionar el problema. Sin embargo, los archivos de preferencias se vuelven a cargar desde el disco, por lo que si la parte afectada de la aplicación se guardó en una preferencia persistente, reiniciar la aplicación no tendrá ningún impacto: el valor incorrecto se volverá a cargar. Eso es cuando eliminar el archivo de preferencias puede ayudar. Es como reiniciar la aplicación, pero para cosas que se guardaron.

Estas cosas pueden suceder porque los programadores suponen que los datos que tiene su aplicación son correctos. Si un usuario puede elegir un color haciendo clic en un control de rueda de color estándar, probablemente no haga ningún trabajo adicional para verificar que sea correcto antes de usarlo. (En comparación, una aplicación como Safari hace un montón de trabajo extra verificando todo, porque carga y ejecuta archivos directamente desde Internet).

Lo bueno es que casi siempre es correcto, y es mucho más fácil si asumes que los valores internos son correctos. La desventaja es que si un valor malo se cuela de alguna manera (como si el usuario hiciera algo totalmente inesperado), las cosas pueden volverse locas hasta que todo se restablezca.


Eso es interesante. Está diciendo que el problema generalmente es específico de la aplicación y tiene que ver con un error o una supervisión que permite establecer valores incorrectos y no verificarlos antes de su uso posterior, no con ninguna lectura / escritura o manejo general de la lista. Sin embargo, todavía me parece extraño que algo tan común (y oficial) como Dock ( apple.stackexchange.com/questions/33950/… ) tenga un problema, aunque tal vez sea una excepción y realmente sea un error de lectura / escritura.
wxs

Walker: si alguien tiene uno de estos archivos corruptos de Dock Plist, es fácil de verificar. Mi dinero todavía está en un error en la aplicación (Preferencias del sistema o Dock), no en el código de plist.
Ken

1

Como una persona de la tercera edad con problemas de tecnología, descubrí que mi archivo de preferencias de iTunes estaba dañado y hacía que el acuerdo de licencia apareciera cada vez que abría iTunes. Además, todas mis preferencias tuvieron que restablecerse. Creo que las respuestas anteriores son correctas, ya que justo antes de tener este problema, me vi obligado a apagar la computadora (problemas eléctricos en el área) y reiniciar / reiniciar varias veces varias veces. Las solicitudes finalizaron antes de que se completaran las instrucciones / redacción. Pero la solución para generar un nuevo archivo de preferencias de iTunes se mostró en línea y es muy fácil de hacer. Se solucionó el problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.