![]() | 1 bfjm 323 天前 via iPhone xid 大小是否超过了 2 xid 是否有线程安全问题 |
4 billccn 323 天前 你是怎么定位到这行代码的? 这代码看上去人畜无害,除非编译器认为 xid.size()必定小于 2 ,于是编译了个 undefined behavior 进去? 当然编译问题也是有可能的,你有保留这行代码然后 clean 编译过一次吗? |
5 vfx666 OP @billccn 一点点排除定位到的问题,因为测试了软件之前的发行版没有问题,这就可以把范围缩小到具体的代码段了。然后进一步缩小排除,最后发现就是这么一行 保留这行代码,即使此代码并没有被执行(写一个 if 判断故意跳过这行)还是会触发问题。你说的 clean 编译是指的那个“重新编译…”选项吗 |
![]() | 8 araraloren 322 天前 haha |
![]() | 9 Promtheus 322 天前 |
![]() | 10 realpg PRO 先改写这一行 xid.erase(xid.end() - 2, xid.end()); 拆语句成 tmp_a = xid.end() tmp_b = tmp_a -2 log tmp_a, tmp_b to logfile with current timestamp xid.erase(tmp_b,tmp_a) |
![]() | 11 lixile 322 天前 大概率 overflow 了 只是这行代码所在参与编译后 导致崩溃的内存位置被 overflow 到了 不参与时 overflow 位置 没有涉及关键内存 |