我试图找出原因:
*** glibc detected *** ...: invalid fastbin entry (free): 0x00007fc384ced120 ***
该程序转储了核心,因此我能够将其追溯到一个非常简单的类的析构函数,类似于:
class foo : public foo_base
{
...
...
std::vector<boost::weak_ptr<bar> > vec;
}
析构函数是虚拟的foo_base
而不是实现的foo
该向量vec
仅在构造函数中分配,此后不再修改。
glibc错误提到的地址与vec._M_impl._M_start
我可以从哪里开始寻找原因?
知道fastbin是什么,怎么会失效呢?
这可能是双重释放的情况,还是 glibc
double free
在这种情况下肯定会提高 a ?