New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix user_interface::alloc_thread_bit() usage #10846
Conversation
8c66a01
to
555d492
Compare
Hmm maybe @Nekotekina can look into it later. This has many consequences in its current form. |
Fixed in a simpler way. |
From my limited debugging attempt, these parts of code aren't called at all if I ready then stop the emulator. Could be something else. |
I noticed 3 unknown threads dangling in VS. this PR seems to fix the issue. |
there's something fishy here. I think I know why |
found it |
See #10838 |
Ok I'll elaborate, when Emu.Stop() is executed (can be executed at any given moment) all threads are notified with their state transitioning first to thread_state::aborting. In this state, enqueued thread tasks may or may not be executed. Previous alloc_thread_bit() usage assumed that the enqueued task is always executed. |
add73a7
to
2b3ae27
Compare
The reason it crashed is because enqueued task which releases thread bits never executed in RSX overlays code, user_interface class.
Aims to fix #10845