Skip to content

gate debug create rollback icd destroy on reserved index#1963

Merged
charles-lunarg merged 1 commit into
KhronosGroup:mainfrom
aizu-m:debug-create-rollback-reserved-index
Jul 9, 2026
Merged

gate debug create rollback icd destroy on reserved index#1963
charles-lunarg merged 1 commit into
KhronosGroup:mainfrom
aizu-m:debug-create-rollback-reserved-index

Conversation

@aizu-m

@aizu-m aizu-m commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Found auditing the debug messenger/report create rollback paths. Reproduced by filling the used-object status list and then failing its resize on the next create, so the slot reservation fails. The test driver then reports:

Messenger not found during destroy!

terminator_CreateDebugUtilsMessengerEXT gates its rollback ICD-destroy loop on pNextIndex and indexes it with next_index. When loader_get_next_available_entry fails the list is full and its resize was refused no slot was reserved and next_index is still 0, yet the loop runs and destroys the driver handle of the messenger already sitting in slot 0. That handle belongs to a still-live messenger. The slot is never cleared, so the application later calls vkDestroyDebugUtilsMessengerEXT on it and the driver is told to destroy the same handle a second time.

Gate the loop on index_reserved, matching the slot-status rollback just below it. terminator_CreateDebugReportCallbackEXT has the same defect and the same fix.

Regression test added under Allocation: it fails the used-object list resize and checks the live messenger keeps its driver handle.

@ci-tester-lunarg

Copy link
Copy Markdown

Author aizu-m not on autobuild list. Waiting for curator authorization before starting CI build.

1 similar comment
@ci-tester-lunarg

Copy link
Copy Markdown

Author aizu-m not on autobuild list. Waiting for curator authorization before starting CI build.

@charles-lunarg charles-lunarg left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Sensible - index_reserved bool is used to indicate that the ICD's have reserved elements which should be freed.

@ci-tester-lunarg

Copy link
Copy Markdown

CI Vulkan-Loader build queued with queue ID 33980.

@ci-tester-lunarg

Copy link
Copy Markdown

CI Vulkan-Loader build # 3620 running.

@ci-tester-lunarg

Copy link
Copy Markdown

CI Vulkan-Loader build # 3620 passed.

@charles-lunarg charles-lunarg merged commit 7ab4d36 into KhronosGroup:main Jul 9, 2026
51 checks passed
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.

3 participants