Skip to content
Published at:

当电脑的时间被手动修改了会发生什么?

上周同事遇到了一个bug,程序中使用了一个线程等待函数int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime);,而其中最后一个参数struct timespec是个时间点。引发bug的原因是另一个程序把系统的时间改了,使得这个线程卡在那里一直等待。

那如果我把电脑上的时间手动改成了一年前,会发生什么?测试记录下

Mail邮箱中的账号需要我重新去登录

Calendar日历应用提示

Safari和Google Chrome浏览器禁止我打开网页,并提示我电脑的时间错了

也能访问,它的提示是让我明白有风险。

某些付费软件,试用过期现在又能用了

🙀🙀🙀惊喜呀

总结

上面有些是应该访问网络,同步数据证书的问题;软件试用过期的应该也是记录了时间点,到时间点才过期。 核心问题是:如何去解决这些问题?同事遇到的bug,以及软件试用过期还能用的问题。首先能不能不依赖这个时间点;然后,如果必需依赖的话还可能需要做额外的校验,或者用其它的机制去保证

Updated at: