mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-17 08:11:51 +00:00
Fix Emulator::Pause race with IDM
This commit is contained in:
parent
aad5283786
commit
d51bb8b1cc
@ -597,6 +597,23 @@ cpu_thread::~cpu_thread()
|
||||
cpu_thread::cpu_thread(u32 id)
|
||||
: id(id)
|
||||
{
|
||||
while (Emu.GetStatus() == system_state::paused)
|
||||
{
|
||||
// Solve race between Emulator::Pause and this construction of thread which most likely is guarded by IDM mutex
|
||||
state += cpu_flag::dbg_global_pause;
|
||||
|
||||
if (Emu.GetStatus() != system_state::paused)
|
||||
{
|
||||
// Emulator::Resume was called inbetween
|
||||
state -= cpu_flag::dbg_global_pause;
|
||||
|
||||
// Recheck if state is inconsistent
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
g_threads_created++;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user