项目代码在gtest单元测试中崩溃的问题
-
原问题发布在我项目的issue专栏中:
https://github.com/FrozenLemonTee/original/issues/9具体细节请看原问题,此处不过多赘述。
大致情况就是我在开启cmake Release优化后,对我的基础库项目中的双向链表使用gtest进行单元测试时发生崩溃。而且错误仅在对双向链表的相等运算符进行单元测试时发生,该源文件中仅有这一项测试会崩溃,同时具有相似实现的单向链表也有此问题。
补充一些环境信息:
发生崩溃的现象本人已在以下环境复现:- Manjaro Linux+CPP23+GCC15.1+Google Test v1.16.0
- Windows11+CPP23+MinGW 11.0 w64+Google Test v1.16.0
-
感觉可能是哪里的实现造成了UB, 导致 加几个printf 造成的代码生成不一样 错误也不一样了
-
chain对象104, 3个对象中间asan插入了红区保护
通过内存布局看[00]
的访问(size_)是在104最后32字节的, 但依然报错并且非常奇怪的是, 插入crash代码(减少使用printf/cout 造成代码生成变化带来的干扰) 92可以执行到, 95行无法执行到
怀疑的地方
- 分配器内存对齐问题?
- operator=的实现是否正确处理基类?
- 哪里的代码造成UB, 导致代码生成出现问题?
-
此回复已被删除!