代码拉取完成,页面将自动刷新
fdb_tsdb.c 859 行,db->cur_sec.addr 在 TSDB 满时, 初始化为 FDB_DATA_UNUSED, 导致 oldest_addr 溢出错误。
uint32_t latest_addr;
if (check_sec_arg.empty_num > 0) {
latest_addr = check_sec_arg.empty_addr;
} else {
latest_addr = db->cur_sec.addr;
}
/* db->cur_sec is the latest sector, and the next is the oldest sector */
if (latest_addr + db_sec_size(db) >= db_max_size(db)) {
/* db->cur_sec is the the bottom of the partition */
db->oldest_addr = 0;
} else {
db->oldest_addr = latest_addr + db_sec_size(db);
}
修改测试
uint32_t latest_addr;
if (check_sec_arg.empty_num > 0) {
latest_addr = check_sec_arg.empty_addr;
} else {
latest_addr = db->cur_sec.addr;
}
/* db->cur_sec is the latest sector, and the next is the oldest sector */
if (latest_addr == FDB_DATA_UNUSED || latest_addr + db_sec_size(db) >= db_max_size(db)) {
/* db->cur_sec is the the bottom of the partition */
db->oldest_addr = 0;
} else {
db->oldest_addr = latest_addr + db_sec_size(db);
}
感谢你反馈,将 774 行改为下面的方式可能更直观
/* There is no empty sector. */
latest_addr = db->cur_sec.addr = db_max_size(db) - db_sec_size(db);
另外,我看 update_sec_status 函数内部估计也要完善一下,里面没有对 FDB_SECTOR_STORE_FULL 状态进行判断,否则继续执行插入 TSL 的动作估计会有问题。方便提交一下这块的改动吗?
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
fixed in 8114f88
登录 后才可以发表评论