Hi,
I found a bug in fds module (Flash Data Storage) which lead to data system corruption.
Scenario:
-
Given the device started GC(Garbage Collection) procedure
-
When the device will reset during the in the certain moment of page swap procedure.
-
Then assigning new record id will overlap existing ones.
When just first two words of a record are copied to the swap page, the header of this record will pass header_check function.
During the page_scan procedure, this corrupted header will be used to update m_latest_rec_id. It will result in assigning new record ids from 0.
Solution:
I have updated header_check function to check record_id against 0xFFFFFFFF value, and now I am testing this workaround.