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
Erfan-Ahmadi added a commit that referenced this pull request Jul 17, 2026
* copyMemoryToImage بعدز هئحمعئثدفثی

- Add hostImageCopy as MOVE_TO_LIMIT in device_features.json.
- Query and enable VkPhysicalDeviceHostImageCopyFeaturesEXT through limits.hostImageCopy.
- Add EUF_HOST_TRANSFER_BIT and map it to VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT.
- Wire VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT into hostImageTransfer format usage.
- Add host image copy flags and SMemoryToImageCopy.
- Add ILogicalDevice::copyMemoryToImage validation and CVulkanLogicalDevice backend.
- Validate host-transfer image creation and EHICF_MEMCPY_BIT full-subresource rules.

* Add `transitionImageLayout` function

* one small dublicated bug fix

* Add Vulkan image copy and layout transition support

* - Added support in `CVulkanPhysicalDevice` to query and process `hostImageCopyProperties`, including `identicalMemoryTypeRequirements`, `copySrcLayouts`, and `copyDstLayouts`.
- Updated `ILogicalDevice` to validate source and destination image layouts for host image copy operations in `copyMemoryToImage`, `copyImageToMemory`, `copyImageToImage`, and `transitionImageLayout`.
- Extended `device_limits.json` to include new fields for `hostImageCopySrcLayouts`, `hostImageCopyDstLayouts`, and `identicalMemoryTypeRequirements`.

* Added `optimalTilingLayoutUUID` to `IPhysicalDevice`

* fix PR comments from Erfan

* getImageSubresourceLayout implemented

* Update examples_tests submodule

* Revert "Update examples_tests submodule"

This reverts commit 11801ba.

* Restore validateImageCreationAgainstDevice lost in master merge

* Update examples_tests to branch merged with examples master

* Revert "Update examples_tests to branch merged with examples master"

This reverts commit d0dd4fb.

* update examples to master (before final merge)

* update fixed examples

* Fix async queue teardown (#1083)

* Add async queue teardown diagnostics

* Fix async queue teardown

* update examples

---------

Co-authored-by: Erfan Ahmadi <ahmadierfan99@gmail.com>
Co-authored-by: Arkadiusz Lachowicz <34793522+AnastaZIuk@users.noreply.github.com>
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