Version: (using KDE KDE 3.0.4) Installed from: SuSE RPMs OS: Linux Dear Reinhold, sorry to bother you again. However I am experiencing major difficulties when Syncing my Visor with KPilot. While Syncing the Calendar the following occurs: DataMgr.c Line 5964 Invalid uniqueID passed <Reset> Could Kpilot (shipped with KDE 3.0.4 SuSE RPMS) by the cause of that? After this crash even with resetting the Visor and KpilotDaemon (killall kpilotDaemon) no further syncing is possible. This time the Kernel itself seems to be the problem: Nov 9 01:08:06 vienna kernel: usb.c: USB device not accepting new address=13 (error=-110) Do you have any advice about this behaviour??? If you decide to have a look at the problem the cosnole output of kpilotDaemon might be interesting too. So here it is: <snip> PilotRecord (pilotRecord.cc:51) writeRecord (pilotSerialDatabase.cc:174) writeRecord (pilotLocalDatabase.cc:279) PilotRecord (pilotRecord.cc:60) readRecordById (pilotSerialDatabase.cc:99) PilotRecord (pilotRecord.cc:51) setDescription (pilotDateEntry.cc:151) setNote (pilotDateEntry.cc:180) PilotRecord (pilotRecord.cc:51) writeRecord (pilotSerialDatabase.cc:174) writeRecord (pilotLocalDatabase.cc:279) PilotRecord (pilotRecord.cc:60) readRecordById (pilotSerialDatabase.cc:99) Got tickled Got tickled Got tickled Got tickled Got tickled Got tickled Got tickled Got tickled </snip> Cheers, Thorsten - -- Thorsten Hornung Bonn, Germany
It does not have to do anything with USB. It happens an my Palm Vx (Serial port!) as well. BTW: kpilot has never ever synced my palm, while pilot-xfer -sync always works out of the box. The version I use is self-compiled CVS version: V4.3.5 (Using KDE 3.1.90 (CVS >= 20021124)) And here's the log: HotSync Log 23:19:05 Trying to open device... 23:19:05 Device link ready. 23:19:15 Checking last PC... 23:19:15 Syncing with KMail(Kroupware) disabled 23:19:15 KPilot 4.3.5 HotSync starting... 23:19:16 [Conduit vcal-conduit] 23:19:17 Syncing with file "" 23:20:52 [Conduit knotes-conduit] 23:20:52 KNotes is not running. The conduit must be able to make a DCOP connection to KNotes for synchronization to take place. Please start KNotes and try again. 23:20:55 The conduit knotes-conduit could not be executed. 23:20:56 [Conduit abbrowser_conduit] 23:22:25 No Files to install 23:22:25 End of HotSync 23:22:25 HotSync Completed. 23:22:27 Pilot device /dev/pilot doesn't exist. Assuming the device uses DevFS. 23:22:28 Trying to open device... 23:22:28 Could not open device: /dev/pilot (will retry)
Forget my comment: Error Message on Palm is the same (Invalid uniqueID passed), but it happens while syncing adresses. Doing full sync combined with some other "correct" syncing options helps. Chris
I have the same problem when syncing my Palm III, except the line number is different. I did have an address/contact conflict i.e. address was different on the PC and Handheld, I got the conflict resolution dialog box with options to choose which address should be used in sync'ing. I selected "leave untouched", after that it hung and I had to reset the Palm. I retried and selected "PC overrides Handheld" and got the same thing. This is the error message: DataMgr.c Line:4250 Invalid uniqueID passed <reset> Other info that maybe useful: ======================= -- pilot-link.0.11.7 -- KPIM built from sources KDE3.1.0 g++ -v Reading specs from /usr/lib/gcc-lib/i386-slackware-linux/2.95.3/specs gcc version 2.95.3 20010315 (release) -- Kevin
BTW, KPIM was built from sources KDE3.1.0/QT3.1.2 -- MG
Subject: kdepim/kpilot/lib CVS commit by kainhofe: Added a check for invalid record ids when searching or writing records to the handheld. If they take more than 3 bytes, the handheld will crash, so I reset the id to zero to cause new record IDs to be assigned. This will prevent these crashes in the future, but I still have to find the place where these wrong values were assigned first place. CCMAIL: 59313@bugs.kde.org CCMAIL: 51216@bugs.kde.org M +3 -3 pilotRecord.h 1.7 M +19 -3 pilotSerialDatabase.cc 1.16 --- kdepim/kpilot/lib/pilotSerialDatabase.cc #1.15:1.16 @@ -144,4 +144,10 @@ PilotRecord *PilotSerialDatabase::readRe return 0L; } + if (id>0xFFFFFF) + { + kdError() << k_funcinfo << " Encountered an invalid record id " + <<id<<endl;; + return 0L; + } if (dlp_ReadRecordById(fDBSocket, getDBHandle(), id, buffer, &index, &size, &attr, &category) >= 0) @@ -210,5 +216,5 @@ PilotRecord *PilotSerialDatabase::readNe } -// Writes a new record to database (if 'id' == 0, one will be assigned and returned in 'newid') +// Writes a new record to database (if 'id' == 0 or id>0xFFFFFF, one will be assigned and returned in 'newid') recordid_t PilotSerialDatabase::writeRecord(PilotRecord * newRecord) { @@ -222,4 +228,14 @@ recordid_t PilotSerialDatabase::writeRec return 0; } + // Do some sanity checking to prevent invalid UniqueIDs from being written + // to the handheld (RecordIDs are only 3 bytes!!!). Under normal conditions + // this check should never yield true, so write out an error to indicate + // someone messed up full time... + if (newRecord->getID()>0xFFFFFF) + { + kdError() << k_funcinfo << "Encountered an invalid record id " + <<newRecord->getID()<<", resetting it to zero."; + newRecord->setID(0); + } success = dlp_WriteRecord(fDBSocket, getDBHandle(), @@ -227,5 +243,5 @@ recordid_t PilotSerialDatabase::writeRec newRecord->getCat(), newRecord->getData(), newRecord->getLen(), &newid); - if (newRecord->getID() == 0) + if (newRecord->getID() != newid) newRecord->setID(newid); return newid; --- kdepim/kpilot/lib/pilotRecord.h #1.6:1.7 @@ -51,6 +51,6 @@ public: void setCat(int cat) { fCat = cat; } - unsigned long getID() const { return fID; } - void setID(unsigned long id) { fID = id; } + recordid_t getID() const { return fID; } + void setID(recordid_t id) { fID = id; } private: @@ -59,5 +59,5 @@ private: int fAttrib; int fCat; - unsigned long fID; + recordid_t fID; public:
*** Bug 59313 has been marked as a duplicate of this bug. ***
The check for invalid IDs which I commited to current cvs and the 3.1 branch disallows the situation, where the crash occurs, and resets the ID to a valid value. So I consider this bug fixed.
*** Bug 63785 has been marked as a duplicate of this bug. ***