Nobody knows what it is for, which doesn't help. Might be something to do with MP savegames, but it is anyone's guess...
The correct way to fix it, since disableSerialization is a backwards compatibility feature, is though ensuring that uiNamespace is used for globals that reference UI handles (control/display values) and not storing these in local variables.
Compatibility mode:
disableSerialization; // Allow UI handles in regular mission namespace.
nameOfMyCat = "fred";
myDisplay = findDisplay 45;
_text = "frogger";
(mydisplay displayCtrl 98) ctrlSetText _text;
(mydisplay displayCtrl 99) ctrlSetText _text;
Fixed:
nameOfMyCat = "fred"; // Non-UI globals still work the same
with uiNamespace { mydisplay = findDisplay 45 };
_text = "frogger"; // Locals cross the namespaces, but cannot contain UI handles.
with uiNamespace {
(mydisplay displayCtrl 98) ctrlSetText _text;
(mydisplay displayCtrl 99) ctrlSetText _text;
};
Note: I strongly recommend the use of with over the alternative, which is to use of set/getVariable on the namespace.
Anyway, plenty of information on this if you look around. I'd not worry about it and stick to disableSerialization for any ported stuff, though it might be worth writing any new dialog stuff "properly". No point rewriting your existing code until you know if you really need to.