Skip to content

optimize_speed 下异常语义受 GTest 注册数量与启动分配布局影响 #372

Description

@pikasTech

问题

Linux optimize_speed 配置启用 Arg/方法缓存后,仅把一个 threading.lock_rlock GTest 拆成三个独立 GTest 注册,就会让与线程无关的 Python 3 异常测试稳定失败:

  • pikaMain.python3_typed_except_runtime_matrix
  • pikaMain.python3_unpack_value_errors

保持相同线程实现和测试脚本,只恢复为单个 GTest 注册后,两项测试重新通过。该现象说明 runtime 缓存行为受到进程启动阶段分配布局或地址变化影响,存在潜在的缓存键、失效或对象生命周期问题。

复现条件

  • Ubuntu 22.04 Docker 开发镜像
  • pika_config_optimize_speed.h
  • 基线提交:94c0d053fb1fcd63ef16dd943ae19d3afd7e3964
  • module-test.cpp 额外增加两个空或线程相关 GTest 注册,重建后定向运行上述两项测试

已有证据

  • 干净基线:两项通过。
  • 仅应用 Lock/RLock C 实现变更:两项通过。
  • 再应用拆成三个 GTest 注册的 module-test.cpp:两项失败。
  • 恢复为单个 GTest 注册、测试内部依次执行三个脚本:两项通过。
  • 当前线程锁修复采用单注册规避,没有修改 runtime 缓存。

验收

  • optimize_speed 下,增加或调整无关 GTest 注册不改变 typed except、unpack 错误捕获结果。
  • 定位并修复缓存键、失效或生命周期根因。
  • 增加不依赖偶然链接/堆布局的回归测试。
  • default、minimal、pool、float 语义不回归,资源占用总体不膨胀。

目标合并分支: master

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions