Dear Pycom team,
while investigating an issue why rshell would upload our files over and over again despite its rsync implementation should compensate for that (dhylands/rshell#124), we just found an issue when looking at mtime timestamps of the files created on the device.
We found that there might be an integer overflow within the virtual filesystem implementation keeping track of filesystem metadata.
This example says a thousand words:
>>> import time; f = open('/flash/test', 'w'); f.write('hello'); f.close(); time.time() - os.stat('/flash/test')[7]
2147483648
It looks like only newer firmware releases are affected. The bug apparently started appearing in 1.20.0.rc0 and is still visible in 1.20.2rc3-pybytes. However, it is not present in 1.18.2.r7 and 1.18.3-pybytes. It looks like it is independent of FatFS vs. LittleFS.
2147483648 is just 2^31 or INT_MAX + 1 or abs(INT_MIN). The correct outcome should be zero (0), or sometimes 1 - dependent on how fast the oneliner is executing.
Thanks already for looking into this.
With kind regards,
Andreas.
cc @husigeza