diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp index f32e814616..444e1bb0ba 100644 --- a/Source/Core/Core/Core.cpp +++ b/Source/Core/Core/Core.cpp @@ -393,6 +393,15 @@ static void CpuThread(const std::optional& savestate_path, bool del if (_CoreParameter.bFastmem) EMM::UninstallExceptionHandler(); + +#ifdef USE_GDBSTUB + if (gdb_active()) + { + gdb_deinit(); + INFO_LOG_FMT(GDB_STUB, "Killed by CPU shutdown"); + return; + } +#endif } static void FifoPlayerThread(const std::optional& savestate_path, diff --git a/Source/Core/Core/PowerPC/GDBStub.cpp b/Source/Core/Core/PowerPC/GDBStub.cpp index f588696276..7e947fccf2 100644 --- a/Source/Core/Core/PowerPC/GDBStub.cpp +++ b/Source/Core/Core/PowerPC/GDBStub.cpp @@ -689,6 +689,13 @@ void gdb_handle_exception(bool loop_until_continue) { while (gdb_active()) { + if (CPU::GetState() == CPU::State::PowerDown) + { + gdb_deinit(); + INFO_LOG_FMT(GDB_STUB, "killed by power down"); + return; + } + if (!gdb_data_available()) { if (loop_until_continue) @@ -822,7 +829,7 @@ static void gdb_init_generic(int domain, const sockaddr* server_addr, socklen_t INFO_LOG_FMT(GDB_STUB, "Client connected."); #ifdef _WIN32 - closesocket(tmpsock); + closesocket(s_tmpsock); #else close(tmpsock); #endif