对于页面分配器的重写,@mknyszek 试图在运行时依赖于 math/bits
。这 几乎有效,但与 go test -coverpkg=all
(#35461)冲突,因为后者试图以与在运行时内部运行不兼容的方式对 math/bits
进行仪器化。为了使此功能正常工作,CL 206199 将一些 math/bits
函数复制到运行时(以及 CL 206200 对它们进行了内联)。
这种复制是权宜之计,但不幸的是,对于 1.15,我想重新考虑这个问题。有几个可能性:
-coverpkg=all
不应对运行时所依赖的任何内容适用。如果它不覆盖math/bits
,那么你几乎不会失去任何东西,因为几乎所有这些函数都已经内联了。如果覆盖工具可以切换到使用编译器插入的覆盖率信息,而不是源代码重写,那么这个问题可能会消失。
/cc @dr2chase@cherrymui@mdempsky
6条答案
按热度按时间tp5buhyn1#
如果覆盖工具能够切换到使用编译器插入的覆盖率信息,而不是源代码重写,那么这个问题可能会消失。
只有在
-coverpkg=all
和竞态检测器都启用时,才会发生故障。覆盖工具插入一个调用sync/atomic.AddUint32
(或类似)的操作,该操作由竞态检测器进一步进行仪器化,使其成为对竞态检测器代码的调用(例如在schedinit中没有P)。如果它只是一个原子计数器递增,那么它可能会正常工作。
jdgnovmf2#
Unifying with fuzzing instrumentation sounds good to me, and would avoid the dependency loop. I can play around with this during the freeze.
dzjeubhm3#
你好,Austin、Cherry和Matthew?我将把它移到Go1.16版本中,但请随意调整。
14ifxucb4#
感谢@odeke-em。@mdempsky,我只是好奇你是否有任何机会去统一模糊测试工具集?
rlcwz9us5#
@aclements 不,还没有。
xcitsw886#
将文本内容移动到待办事项列表中。