I've been having some problems with my contact list (it wasn't stored at all) and I decided to take a look. The issues that I've tried so solve here are the following:
1) Issue 333 - when there is an error in the contact list file (invalid XML, etc.) the service responsible for updating it quits during its initialization faze (thus leaving the file corrupted) -> once your file has a problem it'll never be saved
2) It appears that there is some issue with Object.wait(timeout) (at least on the Macs) - the timeout never expires and the object always remains "locked". I didn't quite understand where does this problem come from, so I rewrote the way the signalization (and the whole contact list storage process in general) is done in a different (better) way
I'd like to ask you to try if this modified version of the contact list storage procedure is working for you before publishing.
PS. Any comments on the code or the algorithms are welcome.
contact_list_save.patch (17.7 KB)