无效的fastbin条目(免费)
invalid fastbin entry (free)
我正在努力查找原因:
*** 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
相同
我从哪里开始寻找原因?
知道什么是快速垃圾箱,它怎么可能是无效的?
这会是一个双自由的情况吗?或者glibc在这种情况下肯定会提出
double free
吗?
这可能是由于glibc
中的一个错误造成的。RedHat咨询提供了更多详细信息:https://rhn.redhat.com/errata/RHBA-2014-0480.html
要确定您是否受到此错误的影响:
rpm -qa | grep glibc
如果您的glibc
版本是2.12
,并且没有.149
或更高版本的后缀,那么您的服务器可能会受到此问题的影响。
回答我自己的问题:
我能够排除双空闲的情况,因为事实证明,所有foo
实例总是(正确地)保存在智能指针中。
最近发现了内存损坏错误。无法证实这是最初问题的原因,但这似乎是合理的。
这个问题从未重现。
对我来说,这个错误来自c++的pytorch torch api
我对这个话题还很着迷,但当出现错误时
torch::Tensor var = torch::zeros({1, 1}, torch::kFloat32);
torch::Tensor foo = torch::full({1, 1}, val, torch::kFloat32);
它消失时:
torch::Tensor var = torch::zeros({1, 1}, torch::kFloat64);
torch::Tensor foo = torch::full({1, 1}, val, torch::kFloat64);
相关文章:
- 正在VS调试器中监视映射条目
- C++,指针数组,指向双链表中的条目
- Qt:当QListView获得新条目时,如何更新QStringList
- 使用cpp中的结构和函数的多个学生条目
- 两个 COM 组件中 ENUM 的重复条目
- 选择和修改嵌套向量中的条目的最佳实践
- C++:当所有条目都保证是唯一时,替代 std::map
- 将条目添加到双端 c++
- 如何在cpp中删除(免费)多维结构内存?
- 存储在堆分配向量中的指针的免费存储
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- 应用地址清理器后,免费无效指针消失
- 如何在目录迭代器中选择特定的目录条目
- 基于文件中的条目创建对象
- 为什么用绕道钩住堆免费对删除/免费不起作用?
- C++ 为每个结构{人}条目创建文件
- 我的C++程序只写入文本文件最后一个条目
- std::atomic中的任何内容都是免费等待的
- 无效的fastbin条目(免费)