runtime: TestFutexSleep can permanently disable async preemption until process exit. #50749
Labels
FrozenDueToAge
NeedsFix
The path to resolution is known, but the work has not been done.
release-blocker
Milestone
TestFutexSleep
callsruntime.Futexsleep
, which temporarily disables asynchronous preemption. Unfortunately,TestFutexSleep
calls this from multiple goroutines, creating a race condition that may result in asynchronous preemption remaining disabled for the remainder of the process lifetime.This was a contributing factor in #45867, where async preemption would have allowed forward progress (though #45867 still has a different work conservation bug).
This test was created in https://go.dev/cl/7876043 as a regression test for buggy division logic in
futexsleep
. It was made largely obsolete (IMO) about 6 months later by https://go.dev/cl/11575044, which moved this logic toruntime.timediv
, which could be tested independently.This test has a bad track record of flakiness bugs based on the file history, thus I propose removing this test entirely in favor of a new unit test for
timediv
.cc @aclements @mknyszek @cherrymui
The text was updated successfully, but these errors were encountered: