Li Zhiyuan
Li Zhiyuan
后面又加了一些日志,看起来 wake_up_waiter 函数里拿到的两个 wait meta 的指针是一样的。 ``` [2024-09-18 19:55:09.569939] [INFO] [92718] [external/com_github_brpc_braft/src/braft/log_manager.cpp:920] :wakeup_all_waiter: {17160979: 0xfffdde802d28, 8800387989505,17160980: 0xfffdde802d28, 8800387989505} ``` https://github.com/apache/brpc/pull/2156 有没有可能跟这个问题有关?
butil::get_object 使用了 thread_local 变量,如果两次 butil::get_object/return_object 之前有 bthread 切换(例如调用 bthread_start_urgent)就会有问题
 应该是这里有问题。
> brpc 是使用什么版本呢? brpc 使用的是这个 commit:b3a948c9dca29632b3367529488e070852e31f11 gcc 版本:7.3
加上 `-fno-gcse, -fno-cse-follow-jumps, -fno-move-loop-invariants` 这几个编译参数可以解决。看起来使用高版本的编译器也不会有这个问题。