From 868f2d066037537e2d09d69d4f5ca1ee1a6b843f Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Sat, 10 May 2025 14:39:32 -0700 Subject: [PATCH] be a bit more robust to failures in window creation, IPC thread launching, & semaphore non-implemented parts --- src/os/core/linux/os_core_linux.c | 2 +- src/raddbg/raddbg_core.c | 4 ++++ src/raddbg/raddbg_main.c | 7 +++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/os/core/linux/os_core_linux.c b/src/os/core/linux/os_core_linux.c index 23ec77cf..4555d5a9 100644 --- a/src/os/core/linux/os_core_linux.c +++ b/src/os/core/linux/os_core_linux.c @@ -1071,7 +1071,7 @@ os_semaphore_alloc(U32 initial_count, U32 max_count, String8 name) OS_Handle result = {0}; if (name.size > 0) { // TODO: we need to allocate shared memory to store sem_t - NotImplemented; + // NotImplemented; } else { sem_t *s = mmap(0, sizeof(*s), PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); AssertAlways(s != MAP_FAILED); diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 8de188d8..9d5855ec 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -12900,6 +12900,10 @@ rd_frame(void) Vec2F32 monitor_dim = os_dim_from_monitor(monitor); F32 monitor_dpi = os_dpi_from_monitor(monitor); Vec2F32 window_dim = v2f32(monitor_dim.x*4/5, monitor_dim.y*4/5); + if(window_dim.x == 0 || window_dim.y == 0) + { + window_dim = v2f32(1280, 720); + } RD_Cfg *new_window = rd_cfg_new(file_root, str8_lit("window")); RD_Cfg *size = rd_cfg_new(new_window, str8_lit("size")); rd_cfg_newf(size, "%f", window_dim.x); diff --git a/src/raddbg/raddbg_main.c b/src/raddbg/raddbg_main.c index 5cc5210c..a3abc191 100644 --- a/src/raddbg/raddbg_main.c +++ b/src/raddbg/raddbg_main.c @@ -528,8 +528,11 @@ entry_point(CmdLine *cmd_line) ipc_s2m_ring_mutex = os_mutex_alloc(); ipc_s2m_ring_cv = os_condition_variable_alloc(); IPCInfo *ipc_info = (IPCInfo *)ipc_shared_memory_base; - MemoryZeroStruct(ipc_info); - os_thread_launch(ipc_signaler_thread__entry_point, 0, 0); + if(ipc_shared_memory_base != 0) + { + MemoryZeroStruct(ipc_info); + os_thread_launch(ipc_signaler_thread__entry_point, 0, 0); + } scratch_end(scratch); }