Skip to content

BeginFrame can hang at 60fps after warmup moves Chrome time backwards #3012

Description

@varo-yang

Describe the bug

A BeginFrame render can hang during initialization at 60fps and other high frame rates.

Warmup advances Chrome in fixed 33ms steps, but the timestamps used after warmup are calculated from the output fps. At 60fps this makes Chrome time jump backwards:

  • last warmup tick: 1947ms
  • init commit tick: about 1067ms
  • liveness probe tick: about 1083ms
  • frame zero: about 1167ms

HeadlessExperimental.beginFrame can stall after receiving that sequence.

Reproduction

Run a 60fps render on the BeginFrame path with locked warmup enabled. The timestamp calculation on current main produces the sequence above.

A regression test and the fix are included in #3011.

Expected behavior

The init commit, liveness probe, and first captured frame should all use timestamps later than the final warmup tick.

Actual behavior

The first post-warmup timestamp jumps back by roughly 880ms at 60fps, and the BeginFrame call may never complete.

Environment

Current main at 8e41fa17b985b24cb3b4719e553481a583124b68. The affected path is Linux/headless-shell BeginFrame capture.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions