订阅莫名变少的奇怪现象

现象

个别机器上,程序一切正常、不崩溃、日志也无异常,但 EventBus 的 subscribers_ 里键会无端变少(连启动期注册的 ONLINE 都没了)。后果是某个事件悄悄不响应了。

怀疑是堆覆盖 ------ 方向是对的。

排查

先 grep 修改点:EventBus::Unsubscribe 全工程没有调用点,subscribers_ 只会在 Subscribe() 里增加。所以不是"被删了",而是内存被写坏。

再做二分注释:把 GetCard(0, m_cardInfo); 注释掉,正常打开后 subscribers_ 依然无端变少,说明两者并无直接关系。

根因

应用和库之间的 ABI 不一致。

  • 两个 cpp 引用了不同目录下的同名头文件;
  • 两个头文件里的结构体类型不一致;
  • GetCard 在拷贝时多拷贝了数据。

由此产生的连锁反应:

复制代码
越界 16 字节 → 写坏相邻 chunk 的 size 记账
            → 之后某次 malloc 按错误 size 切分
            → 那块内存被随手写,map 节点烂掉
            → find() 找不到键 = "订阅变少"
相关推荐
zhangrelay1 小时前
手机长周期测评十周年终结版本-2026
笔记·学习·智能手机
boy快快长大1 小时前
【Jenkins】入门学习
运维·学习·jenkins
m4Rk_2 小时前
【论文阅读】Agent记忆机制(106):COUNTERMEM——用可执行世界模型验证“如果当时换个动作”的反事实记忆
论文阅读·人工智能·学习·开源·github
测试运维日常笔记2 小时前
SQL 快速学习笔记:1~2 小时掌握面试重点
笔记·sql·学习
fanged3 小时前
Audio学习4(DSP)(TODO)
学习
lengxuenong3 小时前
树状数组 · 信息学学习手册3-优化LIS
c++·学习·算法
果壳science3 小时前
关于光子、量子猜想
笔记·科技·学习·创业创新·学习方法
小弥儿4 小时前
GitHub今日热榜 | 2026-10-22:智能体工具退潮,基础层集中上新
学习·开源·github
Z21-X4 小时前
云原生运维学习笔记:揭开虚拟化的硬核面纱,从底层架构到KVM实战
运维·笔记·学习·云原生