这个bug说起来有点“谜之”,因为它还跟编译器的版本有关。

如果使用gcc 4.8.2编译出一个TokuDB(加-O3编译参数),进行如下操作:

先来看下TokuDB判断一个文件是否为redo log的代码:

这段代码的逻辑很简单,调用sscanf函数获取相关参数, 高能区域为:

大体思路是:

  1. 对函数内变量进行初始化。

阿里云RDS TokuDB最新版本已经修复此问题,使用TokuDB的用户可以进行下小版本升级,以避免此问题影响业务。