diff --git a/Utilities/Thread.cpp b/Utilities/Thread.cpp index 162329cf79..13dff11dbc 100644 --- a/Utilities/Thread.cpp +++ b/Utilities/Thread.cpp @@ -2640,6 +2640,21 @@ void thread_base::exec() sys_log.notice("\n%s", info); } + std::string reason_buf; + + if (auto ppu = cpu_thread::get_current()) + { + if (auto func = ppu->current_function) + { + fmt::append(reason_buf, "%s (PPU: %s)", reason, func); + } + } + + if (!reason_buf.empty()) + { + reason = reason_buf; + } + sig_log.fatal("Thread terminated due to fatal error: %s", reason); logs::listener::sync_all(); diff --git a/rpcs3/main.cpp b/rpcs3/main.cpp index bfefba9558..91d389daf0 100644 --- a/rpcs3/main.cpp +++ b/rpcs3/main.cpp @@ -132,7 +132,17 @@ LOG_CHANNEL(q_debug, "QDEBUG"); } const system_state state = Emu.GetStatus(false); - fmt::append(buf, "\nTitle: \"%s\" (emulation is %s)", state == system_state::stopped ? "N/A" : Emu.GetTitleAndTitleID(), state <= system_state::stopping ? "stopped" : "running"); + + if (state == system_state::stopped) + { + fmt::append(buf, "\nEmulation is stopped"); + } + else + { + const std::string& name = Emu.GetTitleAndTitleID(); + fmt::append(buf, "\nTitle: \"%s\" (emulation is %s)", name.empty() ? "N/A" : name.data(), state == system_state::stopping ? "stopping" : "running"); + } + fmt::append(buf, "\nBuild: \"%s\"", rpcs3::get_verbose_version()); fmt::append(buf, "\nDate: \"%s\"", std::chrono::system_clock::now()); }