Repository navigation
Commit 0cd7c8d
committed
tests/conversions: fence the per-rank sub-world before it is destroyed
tiles_of_array_unit_blocking and tiles_of_arrays_non_unit_blocking build,
when the world has more than one rank, a one-rank sub-world per rank and
split the fused array into arrays living in it. Those arrays are only
lazily destroyed: DistArray's lazy_deleter schedules a lazy_sync task on
the array's own world, i.e. on the sub-world's task queue. The tests then
returned and destroyed the sub-world with that task possibly still
queued; it ran later, from an unrelated fence, against a freed World, and
the WorldObject destructor aborted -- the asynchronous "Abort trap" in the
two-rank macOS Release Pthreads CI job (master f3e3c58, PR #583),
logged while the next test case was already running. lazy_deleter's own
comment describes the same hazard for einsum's per-Hadamard sub-worlds.
Both tests now fence the sub-world (and the global world) before
returning, so the deferred deletions complete while the world is alive.
The race did not reproduce locally in eight two-rank runs of the suite
before or after; the CI job hits it in a fuller task queue.1 parent 733266c commit 0cd7c8d
1 file changed
Lines changed: 20 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
318 | 318 | | |
319 | 319 | | |
320 | 320 | | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
321 | 331 | | |
322 | 332 | | |
323 | 333 | | |
| |||
422 | 432 | | |
423 | 433 | | |
424 | 434 | | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
425 | 445 | | |
426 | 446 | | |
427 | 447 | | |
| |||
0 commit comments