From a4ef7771dfc42318975a4fbc00a6f1b3bd9931cd Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Thu, 26 Dec 2024 17:41:31 -0800 Subject: [PATCH] pthread: Bump minimum stack size to fix cubeb crash. --- .gitmodules | 1 + src/core/libraries/audio/cubeb_audio.cpp | 1 - src/core/libraries/kernel/threads/pthread.cpp | 4 ++-- src/emulator.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 25d518a63..1c05ba6f3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -122,3 +122,4 @@ [submodule "externals/cubeb"] path = externals/cubeb url = https://github.com/mozilla/cubeb + shallow = true diff --git a/src/core/libraries/audio/cubeb_audio.cpp b/src/core/libraries/audio/cubeb_audio.cpp index 448b80624..b8058f295 100644 --- a/src/core/libraries/audio/cubeb_audio.cpp +++ b/src/core/libraries/audio/cubeb_audio.cpp @@ -137,7 +137,6 @@ private: }; CubebAudioOut::CubebAudioOut() { - cubeb_set_log_callback(CUBEB_LOG_DISABLED, nullptr); if (const auto ret = cubeb_init(&ctx, "shadPS4", nullptr); ret != CUBEB_OK) { LOG_CRITICAL(Lib_AudioOut, "Failed to create cubeb context: {}", ret); } diff --git a/src/core/libraries/kernel/threads/pthread.cpp b/src/core/libraries/kernel/threads/pthread.cpp index 610e61238..761d13346 100644 --- a/src/core/libraries/kernel/threads/pthread.cpp +++ b/src/core/libraries/kernel/threads/pthread.cpp @@ -244,8 +244,8 @@ int PS4_SYSV_ABI posix_pthread_create_name_np(PthreadT* thread, const PthreadAtt new_thread->tid = ++TidCounter; if (new_thread->attr.stackaddr_attr == 0) { - /* Enforce minimum stack size of 64 KB */ - static constexpr size_t MinimumStack = 64_KB; + /* Enforce minimum stack size of 128 KB */ + static constexpr size_t MinimumStack = 128_KB; auto& stacksize = new_thread->attr.stacksize_attr; stacksize = std::max(stacksize, MinimumStack); } diff --git a/src/emulator.cpp b/src/emulator.cpp index 252a34418..954ebd8f9 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -321,7 +321,7 @@ void Emulator::LoadSystemModules(const std::filesystem::path& file, std::string LOG_INFO(Loader, "No HLE available for {} module", module_name); } } - if (std::filesystem::exists(sys_module_path / game_serial)) { + if (!game_serial.empty() && std::filesystem::exists(sys_module_path / game_serial)) { for (const auto& entry : std::filesystem::directory_iterator(sys_module_path / game_serial)) { LOG_INFO(Loader, "Loading {} from game serial file {}", entry.path().string(),