Prefab SerializedProperty weird error, bug?

I've created game object using prefab. Normally, when you change value of variable in that object. That variable will show as a bold character in the inspector to indicate that this variable is changed and may have different value from prefab. You can reset the variable by right click and choose revert value to prefab. That variable will be reset and will show as normal character again (not bold).

My problem is that, sometimes, the character of those variables have changed back to normal (not bold) even if there values are different from prefab. I don't know what the causes but when I tried to use revert value to prefab in the inspector. Unity reported error log like this.

Using a SerializedProperty after the object has been deleted is not possible. UnityEditor.SerializedProperty:set_prefabOverride(Boolean) UnityEditor.EditorGUI:SetPrefabOverride(Object, String[], Int32) (at E:\BuildAgent\work\68355d6e5d19d587\Editor\Mono\Generated\EditorGUI.cs:2813)

[....\Editor\Src\Utility\SerializedProperty.cpp line 1118] (Filename: E:/BuildAgent/work/68355d6e5d19d587/Editor/Mono/Generated/EditorGUI.cs Line: 2813)

What happens after that is all other variables in my object has been reverted to prefab too. I have to manually set each value again. And if I change value in prefab then the prefab will revert all values in all objects which derived from it. Ugh! That's really a pain. What really strange is that even if I open the backup of my project. This problem is still not disappear. All of those changed variables are still not in bold. I need to manually change all variables to make them show as a bold character again. So, that I can properly use prefab in my project. After this, if I play the simulation in editor again. Unity will give another error log.

NullReferenceException at (wrapper managed-to-native) UnityEngine.Transform:INTERNAL_get_position (UnityEngine.Vector3&)

at UnityEngine.Transform.get_position () [0x00000] in E:\BuildAgent\work\68355d6e5d19d587\Runtime\Export\Generated\BaseClass.cs:768

at PlayerAI.DistanceToBallVector () [0x00000] in C:\Documents and Settings\Joybook S41 Series\My Documents\Soccer Simulation\Assets\Scripts\PlayerAI.cs:1113

at PlayerAI.IsBallInKickRange () [0x00000] in C:\Documents and Settings\Joybook S41 Series\My Documents\Soccer Simulation\Assets\Scripts\PlayerAI.cs:1090

at PlayerAI.IsControlBall () [0x00000] in C:\Documents and Settings\Joybook S41 Series\My Documents\Soccer Simulation\Assets\Scripts\PlayerAI.cs:1074

at SoccerTeam.IsTeamControlBall () [0x00009] in C:\Documents and Settings\Joybook S41 Series\My Documents\Soccer Simulation\Assets\Scripts\SoccerTeam.cs:989

at SoccerTeam+c__Iterator10.MoveNext () [0x00021] in C:\Documents and Settings\Joybook S41 Series\My Documents\Soccer Simulation\Assets\Scripts\SoccerTeam.cs:511 UnityEngine.MonoBehaviour:StartCoroutine_Auto(IEnumerator) UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator) (at E:\BuildAgent\work\68355d6e5d19d587\Runtime\Export\Generated\BaseClass.cs:1064) c__IteratorE:MoveNext() (at Assets\Scripts\SoccerTeam.cs:449)

(Filename: Assets/Scripts/PlayerAI.cs
Line: 1113)

If I get the first error, this second error will always occur when I start the simulation. After this error, everything is working fine again. There is no error log anymore until my prefab is acting weird again. I'm not sure how to reproduce this problem. All I did is just play/stop the simulation as usual. But sometimes this problem occurs after I stop the simulation. And I've to redone all above processes again. I've encountered this problems three times now since I use Unity3. What's the cause of this problem and how to prevent it?

I've got the same thing going on with mine. I'm thinking it's definitely something wrong with the editor itself. Btw, I'm using Vista x64. I dunno if that's the problem or not, but what are you using?

I have never seen these error messages, but we had numerous occurences of this bug in our project. I was able to write a script that automatically fixes these cases: