问题描述

我在apollo上新增component和算法插件,结果编译正常,运行时出现 CHECK failed: (scc->visit_status.load(std::memory_order_relaxed)) == (SCCInfoBase::kRunning) 错误,

错误日志如下:

[libprotobuf FATAL external/com_google_protobuf/src/google/protobuf/generated_message_util.cc:784] CHECK failed: (scc->visit_status.load(std::memory_order_relaxed)) == (SCCInfoBase::kRunning):
terminate called after throwing an instance of 'google::protobuf::FatalException'
what(): CHECK failed: (scc->visit_status.load(std::memory_order_relaxed)) == (SCCInfoBase::kRunning):

原因分析

proto文件的message名称和其他一样。

网上百度全说在编译时需要加上-lpthread,且需要放到最后。但是这个build文件是apollo团队已经写好的,而且我也尝试增加-lpthread选项,没有什么用,最后生成coredump文件,发现问题定位到确定的一个proto文件,最终我发现我的这个proto是复制了红绿灯的component,message的名称一样,最终我改了component对应的新建的proto文件message名称,成功

解决办法

改了component对应的新建的proto文件message名称,不能和其他proto中一样,最终成功。