[threads] Switch foreign threads to GC Safe in mono_thread_detach #42758
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.
!! This PR is a copy of mono/mono#20435, please do not edit or review it in this repo !!
Do not automatically approve this PR:
* Consider how the changes affect configurations in this repo,
* Check effects on files that are not mirrored,
* Identify test cases that may be needed in this repo.
!! Merge the PR only after the original PR is merged !!
Addresses mono/mono#20290 and mono/mono#20283
If a foreign thread (that was created outside the runtime) calls
mono_thread_detach
, leave it in a preemptively-suspendable state, since we can't expect it to coop suspend.Conversely in
mono_thread_attach
(external only), ensure that we always leavethe thread in GC Unsafe (aka RUNNING) state, for cases like
To make this work, we also make
mono_thread_detach
andmono_thread_attach
external only. The runtime should usemono_thread_internal_detach
andmono_thread_internal_attach
.