根据内核发生oops的log及每次发生crash的位置都不一样,断定是内存越界导致内存被破坏,进而导致重启。因此,开启内核slub debug功能进行定位,经过一晚上的压力测试,得到如下log:
通过反汇编及代码分析,发现是gether_connect及gether_disconnect俩个函数重复释放同一块内存导致。
修复后跑压力测试,发现另外一个问题,分析如下
根据内核发生oops的log及每次发生crash的位置都不一样,断定是内存越界导致内存被破坏,进而导致重启。因此,开启内核slub debug功能进行定位,经过一晚上的压力测试,得到如下log:
通过反汇编及代码分析,发现是gether_connect及gether_disconnect俩个函数重复释放同一块内存导致。
修复后跑压力测试,发现另外一个问题,分析如下