Skip to content

Commit 08b0445

Browse files
HanSur94claude
andcommitted
fix(ci): move TestMonitorTagSingleSource to isolated batch 6
Same R2021b cumulative-state-corruption pattern that bit TestConcurrencyIntegration also hits TestMonitorTagSingleSource: both load `lockfile_mex` and crash MATLAB's MEX dispatcher when invoked after ~20 widget/render tests have run in the same process. Symptom from PR #152 latest run: J-P log shows: ... Running TestMonitorTagPersistence ... Done (09:30:43.30) Running TestMonitorTagSingleSource (09:30:43.31) ##[error]Error: ... matlab process failed with exit code 1 (09:30:43.89) That's a 600 ms gap between "Running" and "exit code 1" — classic segfault during class load. Fix: rename batch 6 from "Concurrency-Integration" (TestConcurrencyIntegration only) to "v4-Cluster-Tests" and expand its pattern to cover both v4.0 cluster test classes that exhibit this issue: pattern: "^Test(ConcurrencyIntegration|MonitorTagSingleSource)" J-P regex updated to exclude TestMonitorTagSingleSource via negative lookahead, mirroring the TestConcurrencyIntegration exclusion in batch 1: pattern: "^Test[J-LN-P]|^TestM(?!onitorTagSingleSource)" Verified locally that the regex picks up every other J-P test (29 names checked) and only excludes TestMonitorTagSingleSource. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent b675c27 commit 08b0445

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

.github/workflows/tests.yml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -435,19 +435,22 @@ jobs:
435435
- { id: 1, name: "A-D", pattern: "^Test[AB]|^TestC(?!oncurrencyIntegration)|^TestD(?!ashboard)" }
436436
- { id: 2, name: "Dashboard", pattern: "^TestDashboard" }
437437
- { id: 3, name: "E-I", pattern: "^Test[E-I]" }
438-
- { id: 4, name: "J-P", pattern: "^Test[J-P]" }
438+
# J-P batch: excludes TestMonitorTagSingleSource (moved to batch 6) —
439+
# it triggers the same R2021b cumulative-state segfault as
440+
# TestConcurrencyIntegration when run after ~20 preceding tests in
441+
# the same MATLAB process.
442+
- { id: 4, name: "J-P", pattern: "^Test[J-LN-P]|^TestM(?!onitorTagSingleSource)" }
439443
# Batch 5 also picks up digit-prefixed v4.0 cluster acceptance harness
440444
# (Test50CompanionAcceptance). The test self-gates via FASTSENSE_RUN_ACCEPTANCE
441445
# so it will report as skipped/incomplete in CI rather than running, but
442446
# including it in a batch keeps it discoverable and statused.
443447
- { id: 5, name: "Q-Z", pattern: "^Test([Q-Z]|[0-9])" }
444-
# Batch 6: TestConcurrencyIntegration runs alone in a fresh MATLAB
445-
# process. Background: R2021b headless Linux accumulates state
446-
# corruption across the long batch-1 run; by the time
447-
# TestConcurrencyIntegration loads `lockfile_mex` it triggers a
448-
# segfault inside MATLAB's MEX dispatcher. Running alone in a fresh
449-
# process gives the MEX a clean dispatcher state.
450-
- { id: 6, name: "Concurrency-Integration", pattern: "^TestConcurrencyIntegration" }
448+
# Batch 6: v4.0 cluster tests that load `lockfile_mex` run alone in a
449+
# fresh MATLAB process. Background: R2021b headless Linux accumulates
450+
# state corruption across the long earlier batches; loading the MEX
451+
# late in the run triggers a segfault inside MATLAB's MEX dispatcher.
452+
# Running in isolation gives the MEX a clean dispatcher state.
453+
- { id: 6, name: "v4-Cluster-Tests", pattern: "^Test(ConcurrencyIntegration|MonitorTagSingleSource)" }
451454
env:
452455
FASTSENSE_SKIP_BUILD: "1"
453456
# v4.0 Phase 1032 SC1: 4-node simulated-cluster smoke. Spawns 4 child

0 commit comments

Comments
 (0)