fix: Disallow #[global_allocator] with #[thread_local] #149296
Closed
+23
−1
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.
Summary
Disallow simultaneous use of
#[global_allocator]and#[thread_local]on the same static item. This fixes a logical incompatibility where the global allocator (a single program-wide instance) cannot coexist with thread-local storage.Test Plan
src/test/ui/allocator/global-allocator-thread-local-conflict.rsthat verifies the error is emitted when both attributes are present.#[global_allocator](without#[thread_local]) still compile successfully.Related Issues
Fixes #85517.
Rationale
The global allocator is designed to be a single instance shared across all threads. Using
#[thread_local]would create a separate instance per thread, which contradicts the purpose of the global allocator and could lead to unexpected behavior. Adding this check prevents such invalid code from compiling.