Skip to content

Fix async queue teardown#1083

Merged
Erfan-Ahmadi merged 2 commits into
host_image_copyfrom
pr1079-async-queue-diagnostics
Jul 13, 2026
Merged

Fix async queue teardown#1083
Erfan-Ahmadi merged 2 commits into
host_image_copyfrom
pr1079-async-queue-diagnostics

Conversation

@AnastaZIuk

@AnastaZIuk AnastaZIuk commented Jul 13, 2026

Copy link
Copy Markdown
Member

Summary

Fix async queue teardown by draining accepted work before request storage is destroyed.

Root cause

The lifecycle issue comes from 9414a480ffe, where IThreadHandler started stopping its worker thread from the base destructor. For CRTP queue users this is too late because derived resources and request storage are destroyed first.

Later async queue changes in de28767cc1, 418db0d4c1, and 87eeacb250 kept the same lifetime model while request slots started carrying associated futures and cancelled requests relied on the worker for cleanup. That made the old teardown ordering visible as an intermittent Debug assert when request_pool was destroyed before all slots were recycled.

This matches the random failure seen around #1079. It is a queue lifecycle bug, not a DXC compile failure.

Fix

Queue owners now call shutdown() from their own destructors. Shutdown closes submissions, waits for active request() calls to finish publishing, drains pending and cancelled slots, and only then stops the worker thread.

@AnastaZIuk AnastaZIuk changed the title Add async queue teardown diagnostics Fix async queue teardown Jul 13, 2026
@Erfan-Ahmadi Erfan-Ahmadi marked this pull request as ready for review July 13, 2026 09:05
@Erfan-Ahmadi Erfan-Ahmadi merged commit 6a7e790 into host_image_copy Jul 13, 2026
26 checks passed
@Erfan-Ahmadi Erfan-Ahmadi deleted the pr1079-async-queue-diagnostics branch July 13, 2026 09:05
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