Skip to content

EUnit fails with 0 failures: a group is cancelled with {shutdown,timeout} and nothing names it #376

Description

@Taure

Four runs in a row - #372, #373, main after both, and #374 - ended EUnit like this:

*unexpected termination of test process*
::{shutdown,timeout}
=======================================================
  Failed: 0.  Skipped: 0.  Passed: 1580.
One or more tests were cancelled.
===> Error running tests

Zero failures, a red build, and no test named. It reproduces on CI only; the same commits run 1573-1580 tests with 0 failures locally.

What has been ruled out

  • Fixture setup running under eunit's 5s default. Real gap, closed in test: give the property fixtures a hang detector, not a performance budget #374 - four property modules had {timeout, N, ...} on the property but not on the {setup, ...} around it. The run still fails the same way afterwards, with the same count, so this was not the cause.
  • prop_reconnect_lifecycle being slow. It is the last module header printed before the abort, but it runs in 1.9s on its own and its property has a 60s timeout.

The lead worth following

The abort lands one second after the last module header. No timer in the tree is one second, so the group that timed out is almost certainly not the one whose name was printed last - eunit reports the cancellation when it reaps, not when the timer starts. Finding the group that actually holds the expiring timer is the whole task.

Until it is found, a red EUnit on this repo means nothing, which is worse than the flake.

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