DolphinQt: Prevent deadlock when exiting the NetPlay Session Browser dialog #9028
+28
−17
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.
It was possible to enter a deadlock when the NetPlay Session Browser dialog was closed while a refresh was still ongoing.
Reproduction steps:
ESCas soon as the dialog pops up, so it is dismissed straight away.Stacktrace (Release build):
When the
NetPlayBrowser::~NetPlayBrowser()is invoked, it attempts to cancel the network thread, and waits for it to return control. However, if a refresh request was still in progress, the network thread might still attempt to update some widgets viaRunOnObject(). Therefore, Qt's event loop remains busy, waiting for the network thread to yield control, and the network thread is waiting for Qt to run a lambda in the object.