From 08f90fb4f0ba99b785f7c9b9f69bd529d6607630 Mon Sep 17 00:00:00 2001 From: thecoder-001 Date: Sun, 28 Apr 2024 02:41:20 +0530 Subject: [PATCH 1/3] fix: crash on osx proc box Signed-off-by: thecoder-001 --- src/osx/btop_collect.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/osx/btop_collect.cpp b/src/osx/btop_collect.cpp index a2c4f62..5528214 100644 --- a/src/osx/btop_collect.cpp +++ b/src/osx/btop_collect.cpp @@ -1249,7 +1249,12 @@ namespace Proc { new_proc.ppid = kproc.kp_eproc.e_ppid; new_proc.cpu_s = kproc.kp_proc.p_starttime.tv_sec * 1'000'000 + kproc.kp_proc.p_starttime.tv_usec; struct passwd *pwd = getpwuid(kproc.kp_eproc.e_ucred.cr_uid); - new_proc.user = pwd->pw_name; + if (pwd != nullptr) { + new_proc.user = pwd->pw_name; + } else { + new_proc.user = "unknown"; + Logger::warning("Could not retrieve user information for user ID:" + std::to_string(kproc.kp_eproc.e_ucred.cr_uid) + " (pid:" + std::to_string(pid) + ")"); + } } new_proc.p_nice = kproc.kp_proc.p_nice; new_proc.state = kproc.kp_proc.p_stat; From 9a3739574443042990b6f5d164bfb3f0503f25f9 Mon Sep 17 00:00:00 2001 From: thecoder-001 Date: Sun, 28 Apr 2024 02:53:50 +0530 Subject: [PATCH 2/3] osx: show uid instead of 'unknown' if no user exists with the same Signed-off-by: thecoder-001 --- src/osx/btop_collect.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/osx/btop_collect.cpp b/src/osx/btop_collect.cpp index 5528214..3f4b63f 100644 --- a/src/osx/btop_collect.cpp +++ b/src/osx/btop_collect.cpp @@ -1252,7 +1252,7 @@ namespace Proc { if (pwd != nullptr) { new_proc.user = pwd->pw_name; } else { - new_proc.user = "unknown"; + new_proc.user = std::to_string(kproc.kp_eproc.e_ucred.cr_uid); Logger::warning("Could not retrieve user information for user ID:" + std::to_string(kproc.kp_eproc.e_ucred.cr_uid) + " (pid:" + std::to_string(pid) + ")"); } } From 5ba45f76330ddead51c76ce449d923ca5554d92c Mon Sep 17 00:00:00 2001 From: thecoder-001 Date: Sun, 28 Apr 2024 23:53:27 +0530 Subject: [PATCH 3/3] Remove logging for uid without username Signed-off-by: thecoder-001 --- src/osx/btop_collect.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/osx/btop_collect.cpp b/src/osx/btop_collect.cpp index 3f4b63f..1b752ad 100644 --- a/src/osx/btop_collect.cpp +++ b/src/osx/btop_collect.cpp @@ -1253,7 +1253,6 @@ namespace Proc { new_proc.user = pwd->pw_name; } else { new_proc.user = std::to_string(kproc.kp_eproc.e_ucred.cr_uid); - Logger::warning("Could not retrieve user information for user ID:" + std::to_string(kproc.kp_eproc.e_ucred.cr_uid) + " (pid:" + std::to_string(pid) + ")"); } } new_proc.p_nice = kproc.kp_proc.p_nice;