Skip to content

CI: bound each parallel-make-check config with its own timeout - #11406

Open
julek-wolfssl wants to merge 2 commits into
wolfSSL:masterfrom
julek-wolfssl:ci/entropy-config-timeout
Open

CI: bound each parallel-make-check config with its own timeout#11406
julek-wolfssl wants to merge 2 commits into
wolfSSL:masterfrom
julek-wolfssl:ci/entropy-config-timeout

Conversation

@julek-wolfssl

Copy link
Copy Markdown
Member

A wedged config previously ran until the job's overall timeout-minutes
killed the whole job, losing results from the other configs and
skipping the upload step (job timeouts cancel rather than fail).

  • Add --timeout to parallel-make-check.py so a stuck config is
    killed and fails on its own instead of taking down the whole job.
  • Set it to 30 min in trackmemory; 168 of 3508 job runs since
    2026-06-12 died this way, every single-config stall being one of the
    two wolfEntropy configs.
  • Upload logs on cancellation.
  • Refresh the stale "minutes" estimates using measured medians.

A wedged config ran until the job's timeout-minutes killed the whole job.
That reports nothing: the other configs' results are lost, and the upload
step never runs because a job timeout cancels rather than fails.

Add --timeout to parallel-make-check.py to kill and fail just that config,
and set it to 30 min in trackmemory, where 168 of 3508 job runs since
2026-06-12 died this way - every single-config stall one of the two
wolfEntropy configs. Also upload logs on cancellation, and refresh the
stale "minutes" estimates from measured medians.
Copilot AI lite review requested due to automatic review settings September 9, 2026 08:54
@julek-wolfssl julek-wolfssl self-assigned this Sep 9, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The CI timeout change is self-contained and defaults to no limit, so existing workflows won’t break while the updated workflow gains resilience against wedged configs.

Pull request overview

This PR improves CI robustness for multi-config make check runs by adding a per-configuration wall-time bound to .github/scripts/parallel-make-check.py, preventing a single wedged configuration from consuming the entire job timeout and skipping log upload.

Changes:

  • Add --timeout support to parallel-make-check.py, enforcing a per-config deadline across the whole step sequence and failing the config on expiry.
  • Update the trackmemory workflow to pass --timeout=30 and refresh per-config minutes estimates.
  • Upload logs on both failure and cancellation to better preserve debugging artifacts.
File summaries
File Description
.github/workflows/trackmemory.yml Refresh config runtime estimates, add per-config timeout, and broaden log-upload conditions.
.github/scripts/parallel-make-check.py Implement per-config timeout handling with bounded waits and process-group termination escalation.
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +86 to +90
{"name": "all-smallstack-cache-trace", "minutes": 8.9,
"configure": ["--enable-smallstackcache", "--enable-smallstack",
"--enable-all", "--enable-debug-trace-errcodes",
"CFLAGS=-DWC_RNG_SEED_CB -DWOLFSSL_TRACK_MEMORY -DWOLFSSL_DEBUG_MEMORY"]},
{"name": "all-wolfentropy", "minutes": 4.1,
{"name": "all-wolfentropy", "minutes": 13.4,
The hosted images carry Google Chrome and Microsoft apt repos. No wolfSSL
job installs from either, but apt-get update fails if either serves a bad
index, which took out a falcon-interop job on 2026-09-09 with a Hash Sum
mismatch on dl.google.com while the Ubuntu archive was fine.

Remove them by matching the repo host in the file, not by filename or by
wiping sources.list.d, so Ubuntu's own sources survive wherever they live
(24.04 keeps them in sources.list.d/ubuntu.sources). Container jobs are
left alone: those images carry neither repo, nor sudo.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants