rpcsx/rpcs3
Eladash f2997e4c00 LV2: Fix the most annoying race ever
Timeline of the race:
1. The PPU is in SLEEP state. state = suspend.
2. lv2_obj::awake is called on the traced thread and is now in ONPROC state, state = signal.
3. lv2_obj::awake is called by another thread externally with a priority higher than our traced thread and appends it to g_pending. state = suspend + signal.
4. lv2_obj::sleep/set_priority (higering priority) is called on any thread which is in ONPROC. Causing it to enter SLEEP or RUNNING state, while the traced thread is back in queue in ONPROC. state = suspend + signal.
5. The traced thread finally calls lv2_obj::awake on itself, g_pending decrements to 0 and we a have a rescheduling event, after XOR state = 0!!! (no signal)
6. In check_state: cpu_sleep_called is now true and remains this way.
7. Another thread with a higher prioty kicks in and appends the traced thread into g_pending. state = suspend.
8. The traced thread is at cpu_thread::cpu_wait(), and that's where it's gonna spend the rest of its life.
2022-08-11 12:44:40 +03:00
..
Crypto Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
Emu LV2: Fix the most annoying race ever 2022-08-11 12:44:40 +03:00
Icons Qt: Use svg instead of png 2021-10-28 21:01:27 +02:00
Input [macOS] Update hid_pad_handler.cpp to prevent DS4 from disconnecting (#12493) 2022-08-11 07:14:37 +02:00
Loader Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
qt/etc Qt: use config to load translation file on startup 2020-02-06 17:41:50 +01:00
rpcs3qt logs: Prevent potential deadlock of the main thread in stack mode 2022-08-11 11:42:16 +03:00
util LV2: Move nearly all notifications out of all mutex scopes including IDM 2022-08-07 20:23:54 +03:00
CMakeLists.txt PPU LLVM arm64+macOS port (#12115) 2022-06-14 15:28:38 +03:00
Cubeb.vcxproj Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00
Cubeb.vcxproj.filters Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00
display_sleep_control.cpp Log cpu usage periodically 2022-03-16 19:42:06 +01:00
display_sleep_control.h Remove BOM markers 2020-12-06 15:30:12 +03:00
emucore.vcxproj rsx: Refactor surface cache storage 2022-08-09 18:32:54 +03:00
emucore.vcxproj.filters rsx: Refactor surface cache storage 2022-08-09 18:32:54 +03:00
frame_icon.xpm
git-version.cmake CD: Fix experimental build warning for Travis 2020-03-27 23:00:22 +03:00
GLGSRender.vcxproj gl: Fix incomplete stencil view of depth-stencil texture 2022-08-03 23:33:31 +03:00
GLGSRender.vcxproj.filters gl: Fix incomplete stencil view of depth-stencil texture 2022-08-03 23:33:31 +03:00
headless_application.cpp Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
headless_application.h Emu: Implement BlockingCallFromMainThread 2022-06-25 14:01:40 +03:00
main.cpp Savestates: Implement Ctrl+R to reload the most recent savestate 2022-07-12 15:15:42 +03:00
main_application.cpp Input: fix pad initialization 2022-08-05 20:16:21 +02:00
main_application.h Emu: some cleanup 2021-04-09 21:03:49 +02:00
resource.h
resources.qrc Qt: Use svg instead of png 2021-10-28 21:01:27 +02:00
rpcs3.desktop Add startupWMClass to linux .desktop Fixes #10685 2021-08-09 09:08:44 +02:00
rpcs3.icns Round macOS icon 2022-02-27 11:16:50 +01:00
rpcs3.ico upgrade icons to a modern design 2021-03-29 22:24:40 +03:00
rpcs3.metainfo.xml metainfo: move away from deprecated appdata 2021-05-19 19:55:58 +03:00
rpcs3.plist.in Set min macOS version to 11.6 2022-02-27 11:16:50 +01:00
rpcs3.png upgrade icons to a modern design 2021-03-29 22:24:40 +03:00
rpcs3.rc
rpcs3.svg upgrade icons to a modern design 2021-03-29 22:24:40 +03:00
rpcs3.vcxproj Qt: log uuid 2022-06-30 21:36:11 +02:00
rpcs3.vcxproj.filters Qt: log uuid 2022-06-30 21:36:11 +02:00
rpcs3_version.cpp rpcs3_version: Bump to 0.0.23 2022-07-02 13:20:41 +01:00
rpcs3_version.h Qt: unify version displays 2022-04-14 23:16:40 +02:00
stb_image.cpp stblib: disable another unsupported clang warning (#10244) 2021-05-07 01:26:21 +01:00
stdafx.cpp shared_ptr.hpp: don't use fake objects 2021-05-30 15:07:17 +03:00
stdafx.h types.hpp: implement smin, smax, amin, amax 2021-05-22 12:10:57 +03:00
VKGSRender.vcxproj vk: Move renderer types to a separate file 2022-02-21 23:58:01 +03:00
VKGSRender.vcxproj.filters vk: Move renderer types to a separate file 2022-02-21 23:58:01 +03:00
windows.qrc
XAudio.vcxproj Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00
XAudio.vcxproj.filters Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00