We have been looking into various crashes on the Treo 650 with the sprint update applied.
During a hotsync our conduit calls SyncOpenDB, SyncPurgeDeletedRecs, and SyncCloseDBEx, and this causes the device to crash with the above error. This occurs when there has been a record deleted on the device. this deletion is done after the previous hotsync in response to the SyncNotify launch code.
We have also been able to reproduce this bug on other devices using PalmOS 5.4.7
Can anyone help explain what is going on here? Why does the cache think there is an unattached record?
This is a bug in DmDetachRecord in Palm OS 5.4.7 which happens if you try to detach a record with a NULL data chunk. These can be created by calls to DmAttachRecord with a NULL value for the data handle. The workaround is to make sure your record does not contain NULL before deleting. I'm not sure how this affects records that have been deleted using DmDeleteRecord. DmRemoveRecord calls DmDetachRecord, so it would be affected by this too.
You might want to write a small test app that scans your DB using DmRecordInfo and reports about any NULL records. If I can characterize this problem better, I'll make a post on my weblog.
-- Ben Combee, Senior Software Engineer, palmOne, Inc. "Combee on Palm OS" weblog: http://palmos.combee.net/ Developer Forum Archives: http://news.palmos.com/read/all_forums/
-- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
