Hello Patrick,

Sorry to hear the binfile caused you that much troubles.

I guess it must be that the alignment of the structs used in the binfiles are different in 64bit than in 32bit.

I must admit that the binfiles were not designed with data portability across architectures in mind. Little to big endian and vice versa also does not work - however the binfile implementation will detect that case. The implementation also checks for a mismatch in the binfile header size, and has a ID and DB version check to handle updates of the data format.

But apparently the alignment difference does not affect the header, but the records (changelog, I assume) themselves, and these are in fact not checked for conformant size when ID and DB version checks are ok. I'll add checks for record size - these should catch migration caused alignment/packing issues.

When binfilebase detects an incompatibility (like too old DB version that cannot be upgraded, or newer DB version than expected), the affected binfiles will be recreated (if it affects settings, the incompatibility will be reported, so the user can decide if settings should be re-created).

Best Regards,

Lukas



On Aug 14, 2009, at 17:26 , Patrick Ohly wrote:

Hello!

I just had a very weird problem: SyncEvolution consistently sent all
items to the server in a normal sync, although they were not recognized as updated or new. The DB CreateContext method was called twice for the
same datastore. Consider myself totally confused at that point.

To cut a long story (several hours) short, the underlying reason was
that I had copied my home directory from an older 32 bit Linux
installation to a newer installation in 64 bit. The binfile
implementation does not seem to cope with that well. I'm not sure how it
caused the effects above, but after removing the entire .synthesis
directory (the place where SyncEvolution keeps the Synthesis binfiles)
syncs started to work normally again.

It is not guaranteed that migrating from 32 bit to 64 bit by simply
copying files works. However, my expectation was (and still is) that
software should detect this, warn the user and the abort. Thoughts?

Of course this happened while testing the final 0.9 release binaries,
which is why I was close to despair and they are not announced yet ;-)

--
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.



_______________________________________________
os-libsynthesis mailing list
[email protected]
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis

Lukas Zeller ([email protected])
-
Synthesis AG, SyncML Solutions  & Sustainable Software Concepts
[email protected], http://www.synthesis.ch





_______________________________________________
os-libsynthesis mailing list
[email protected]
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis

Reply via email to