Some new findings on this issue:

We could reproduce a case where the only thing we are doing is deleting records and then calling DmSyncDatabase(), which then reboots the device with the "VFSDBCache.c, Line:4051, unattached record" every time.

So it's the deletions which cause the problem.

But as DmDeleteRecord() has a problem as well (see thread "Treo 650 (GSM) crashing on delete record!"), the deletions are not done using DmDeleteRecord, but a workaround posted by Ralph Curtis which consists of using DmAttachRecord() to set the ChunkID of the record to NULL, and then setting the dmRecAttrDelete and dmRecAttrDirty bits.

Ralph's rationale for doing this was that the PalmOS Reference states that DmDeleteRecord itself is doing exactly this (settin the ChunkID to NULL). However, this was pre-NVFS information, and re-reading the docs for DmAttachRecord() there is no hint that using it to set the ChunkID to NULL is a valid option. It is not explicitly forbidden, but all the text always refers to attaching a real chunk, not a NULL.

The "unattached record" message very much fits this, so I guess that attaching a NULL chunk with DmAttachRecord() is The Bad Thing here :-)

So I'll be going back to a previous workaround posted by Chris Faherty, which only resizes the record to size 0 and sets dmRecAttrDelete and dmRecAttrDirty. As I do not have a SPRINT Treo here, I do not know yet if this really fixes the issue.

Now, there are three related questions:
a) Has DmDeleteRecord() been fixed in the new SPRINT release?
b) If yes, how can I detect that I am running the new SPRINT release?
c) Has DmDeleteRecord() been fixed for other Treos and T5 releases as well and if yes how can we detect these?


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


-- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/

Reply via email to