go 运行时:使用math/bits库去重位操作

tez616oj  于 2个月前  发布在  Go
关注(0)|答案(6)|浏览(31)

对于页面分配器的重写,@mknyszek 试图在运行时依赖于 math/bits。这 几乎有效,但与 go test -coverpkg=all(#35461)冲突,因为后者试图以与在运行时内部运行不兼容的方式对 math/bits 进行仪器化。为了使此功能正常工作,CL 206199 将一些 math/bits 函数复制到运行时(以及 CL 206200 对它们进行了内联)。

这种复制是权宜之计,但不幸的是,对于 1.15,我想重新考虑这个问题。有几个可能性:

  1. -coverpkg=all 不应对运行时所依赖的任何内容适用。如果它不覆盖 math/bits,那么你几乎不会失去任何东西,因为几乎所有这些函数都已经内联了。

  2. 如果覆盖工具可以切换到使用编译器插入的覆盖率信息,而不是源代码重写,那么这个问题可能会消失。

/cc @dr2chase@cherrymui@mdempsky

tp5buhyn

tp5buhyn1#

如果覆盖工具能够切换到使用编译器插入的覆盖率信息,而不是源代码重写,那么这个问题可能会消失。
只有在-coverpkg=all和竞态检测器都启用时,才会发生故障。覆盖工具插入一个调用sync/atomic.AddUint32(或类似)的操作,该操作由竞态检测器进一步进行仪器化,使其成为对竞态检测器代码的调用(例如在schedinit中没有P)。
如果它只是一个原子计数器递增,那么它可能会正常工作。

jdgnovmf

jdgnovmf2#

Unifying with fuzzing instrumentation sounds good to me, and would avoid the dependency loop. I can play around with this during the freeze.

dzjeubhm

dzjeubhm3#

你好,Austin、Cherry和Matthew?我将把它移到Go1.16版本中,但请随意调整。

14ifxucb

14ifxucb4#

感谢@odeke-em。@mdempsky,我只是好奇你是否有任何机会去统一模糊测试工具集?

rlcwz9us

rlcwz9us5#

@aclements 不,还没有。

xcitsw88

xcitsw886#

将文本内容移动到待办事项列表中。

相关问题