文章预览
阿里妹导读 这篇文章分析了Go编译时插桩工具导致go build -race竞态检测产生崩溃的原因。 不久前, 阿里云 ARMS 团队、编译器团队、MSE 团队携手合作,共同发布并开源了 Go 语言的编译时自动插桩技术。 该技术以其零侵入的特性,为 Go 应用提供了与 Java 监控能力相媲美的解决方案。开发者只需将 go build 替换为新编译命令 otel go build ,就能实现对 Go 应用的全面监控和治理。 问题描述 近期,我们收到用户反馈,使用 otel go build -race 替代正常的 go build -race 命令后,编译生成的程序会导致崩溃。 -race [3]是Go编译器的一个参数,用于检测数据竞争(data race)问题。通过为每个变量的访问添加额外检查,确保多个 goroutine 不会以不安全方式同时访问这些变量。 理论上,我们的工具不应影响 -race 竞态检查的代码,因此出现崩溃的现象是非预期的,所以我们
………………………………