WIP: Fix deadlock when calling fflush during application shutdown #15190
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.
One solution to the deadlock described in #15186 is to allow nested
calls to
emscripten_current_thread_process_queued_calls
.This is needed in this case because the main thread is calling
fflush
(which requires locking the stdout handle) while another thread is
holding the stdout lock, waiting on the main thread to process the write
action.
There may be reasons we don't want to allow nested calls to
emscripten_current_thread_process_queued_calls
but technically itsseems possible.
This change removes all the mitigations that existed in
test_pthread_c11_threads.c
and I could no longer reprodude thedeadlock.
Fixes: #15186