跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组
折叠
品牌标识

D2Learn Forums

  1. 主页
  2. General Discussion | 综合讨论
  3. 项目代码在gtest单元测试中崩溃的问题

项目代码在gtest单元测试中崩溃的问题

已定时 已固定 已锁定 已移动 General Discussion | 综合讨论
c++23gtest单元测试编译优化
4 帖子 2 发布者 84 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • FrozenLemonTeeF 离线
    FrozenLemonTeeF 离线
    FrozenLemonTee
    编写于 最后由 编辑
    #1

    原问题发布在我项目的issue专栏中:
    https://github.com/FrozenLemonTee/original/issues/9

    具体细节请看原问题,此处不过多赘述。

    大致情况就是我在开启cmake Release优化后,对我的基础库项目中的双向链表使用gtest进行单元测试时发生崩溃。而且错误仅在对双向链表的相等运算符进行单元测试时发生,该源文件中仅有这一项测试会崩溃,同时具有相似实现的单向链表也有此问题。

    补充一些环境信息:
    发生崩溃的现象本人已在以下环境复现:

    1. Manjaro Linux+CPP23+GCC15.1+Google Test v1.16.0
    2. Windows11+CPP23+MinGW 11.0 w64+Google Test v1.16.0
    1 条回复 最后回复
    0
    • SPeakS 离线
      SPeakS 离线
      SPeak d2learn-dev
      编写于 最后由 编辑
      #2

      感觉可能是哪里的实现造成了UB, 导致 加几个printf 造成的代码生成不一样 错误也不一样了

      1 条回复 最后回复
      0
      • SPeakS 离线
        SPeakS 离线
        SPeak d2learn-dev
        编写于 最后由 SPeak 编辑
        #3

        chain对象104, 3个对象中间asan插入了红区保护
        通过内存布局看 [00] 的访问(size_)是在104最后32字节的, 但依然报错

        image.png

        821b2e52-ffc5-4751-a9f8-306ac05b66ef-image.png

        并且非常奇怪的是, 插入crash代码(减少使用printf/cout 造成代码生成变化带来的干扰) 92可以执行到, 95行无法执行到

        14502bf3-0652-4f95-8779-5e65c987d49a-image.png

        怀疑的地方

        • 分配器内存对齐问题?
        • operator=的实现是否正确处理基类?
        • 哪里的代码造成UB, 导致代码生成出现问题?
        1 条回复 最后回复
        0
        • FrozenLemonTeeF 离线
          FrozenLemonTeeF 离线
          FrozenLemonTee
          编写于 最后由 编辑
          #4
          此回复已被删除!
          1 条回复 最后回复
          0

          • 登录

          • 没有帐号? 注册

          • 登录或注册以进行搜索。
          d2learn forums Powered by NodeBB
          • 第一个帖子
            最后一个帖子
          0
          • 版块
          • 最新
          • 标签
          • 热门
          • Online Tools
          • 用户
          • 群组