I realized I never wrote back to the list about the solution (so others 
who might get into the same kind problem can see what the actual problem 
was for us).

The problem wasn't caused by the update to a newer version of sqlite. By 
coincidence the firmware which included the new sqlite version got 
published at the same time our logistics started shipping a new wireless 
accessory (we create custom hardware), for which the implementation was 
done long time ago. So we were looking at recent changes in the firmware 
since it had been running a long time without problems, but we were 
unaware that the accessory which sometimes trigged the bug in the 
firmware hadn't been used much in the field earlier.

The actual problem was caused by a reader object which didn't get 
finalized correctly. The reader object was declared outside (before) the 
intended scope by mistake, so the finalize() which the objects 
destructor normally takes care of didn't get called when it should. 
..Which lead to that thread-X kept the connection open while thread-Y 
updated the database. So when thread-X tried to promote a read to a 
write transaction it of course failed since the underlying data had 
changed.

Thanks!

Reply via email to