make threaded exit and cache file loading safer by pausing other threads #55105
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.
Also add a missing lock call in jl_safepoint_suspend_thread.
Instead of only preventing access to LLVM and inference (via the codegen lock), this prevents further access to all internals by disabling the safepoints and waiting for the threads to stop (or to be in unmanaged code that we don't care about).
This then uses that to also make staticdata loading a bit safer, since
jl_lookup_cache_type_
assumes there are no concurrent mutator threads, and we can make that true by pausing all of those.