[SYCL] Do not release threadpool resources on Windows during shutdown - #23067
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adjusts SYCL runtime shutdown behavior to avoid releasing certain global/threadpool resources on Windows, aiming to prevent shutdown-time races/crashes when host tasks are in flight.
Changes:
- Modifies
shutdown_early()threadpool cleanup logic with platform-specific behavior. - Prevents deleting the
GlobalHandlersingleton on Windows inshutdown_late()(intended leak for shutdown safety).
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.
Suppressed comments (1)
sycl/source/detail/global_handler.cpp:389
- Skipping
delete GlobalHandler::RTGlobalObjHandleron Windows leaks the GlobalHandler for all teardown paths, including the documented FreeLibrary unload case (where the process keeps running and the OS will not reclaim the memory). If the intent is to avoid teardown only during process termination, consider keying this decision off the Windows detach reason (e.g., persistlpReserved != NULL/process-termination state fromshutdown_earlyand only skipdeletein that case).
#ifndef _WIN32
// Release the rest of global resources. Do not release GlobalHandler
// on Windows and let OS reclaim leaked memory. Releasing GlobalHandler
// on Windows can seg fault if application uses host tasks, as there
// can be a race between host tasks and shutdown.
cperkinsintel
approved these changes
Sep 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes flaky crash when joining host tasks during windows shutdown.
Windows does not guarantee that threads of main application won't be killed unless DllMain(detach) is complete:
DllMain entry point (Process.h) - Win32 apps | Microsoft Learn
So, we should not try to join host tasks on windows during shutdown.
Fixes CMPLRLLVM-74436