踩坑一处(GCC)STL `std::async` 实现BUG导致的crash问题

💡 原文中文,约16800字,阅读约需40分钟。
📝

内容提要

最近发现使用新版本的opentelemetry-cpp时出现崩溃问题。崩溃位置在std::future析构的地方,由std::async创建。经分析发现是GCC STL实现的一个BUG,已通过修复PR解决。建议绕过该BUG,避免使用该功能。

🎯

关键要点

  • 近期发现使用新版本的opentelemetry-cpp时偶现崩溃问题。
  • 崩溃发生在std::future析构时,由std::async创建的future导致。
  • 分析发现是GCC STL实现的一个BUG,已通过修复PR解决。
  • 建议绕过该BUG,避免使用相关功能。
  • 崩溃栈显示尝试join的线程已经为空,导致异常。
  • 相关代码逻辑在收集上报指标时使用子线程执行导出。
  • 问题可能与线程安全的边界条件有关,需进一步分析。
  • 修复PR已推送并合入,项目组已接入修复版本。
🏷️

标签

➡️

继续阅读