Skip to content

time, runtime: zero duration timer takes 2 minutes to fire #44868

@prattmic

Description

@prattmic

Very rarely, zero duration timers fail to fire for 2 minutes. This program will occassionally fail. e.g.,

$ while ./timer; do echo again; done
again
again
again
again
again
again
again
again
again
panic: Expected time to get value from Timer channel to be less than 2 sec, took 2m0.006359722s, time on channel is 2021-03-08 15:17:38.623999432 -0500 EST m=+120.798106019, current time is 2021-03-08 15:17:38.624042501 -0500 EST m=+120.798149081

This reproduces on 1.16 (linux-amd64, other platforms not tested), but not 1.15. Thus this is probably more fallout from http://golang.org/cl/232298.

Failure seems to consistently occur at 2 minutes, which is a strong indication that this is related to the 2 minute force GC period. Most likely the scheduler is completely missing the timer until forced GC kicks it awake again. That makes this distinct from #44343, where timer expiration is slower but never missed.

cc @ChrisHines @aclements @mknyszek

Metadata

Metadata

Assignees

Labels

FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions