Skip to content

Commit

Permalink
gnu: btop: Fix SEGFAULT error on Intel GPUs.
Browse files Browse the repository at this point in the history
btop would fail on built-in Intel GPUs, this patch fixes that (see
<aristocratos/btop#958>.)

* gnu/packages/patches/btop-fix-segfault-on-intel-gpus.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/admin.scm (btop): Use it.

Change-Id: Ic2bbf55a5f892a37bde17db6fb15025733b9bad6
Reviewed-by: Z572 <[email protected]>
  • Loading branch information
artyom-poptsov committed Nov 3, 2024
1 parent 0d7115b commit da70c25
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
1 change: 1 addition & 0 deletions gnu/local.mk
Original file line number Diff line number Diff line change
Expand Up @@ -1018,6 +1018,7 @@ dist_patch_DATA = \
%D%/packages/patches/bsd-games-number.c-and-test.patch \
%D%/packages/patches/bsd-games-prevent-name-collisions.patch \
%D%/packages/patches/bsd-games-stdio.h.patch \
%D%/packages/patches/btop-fix-segfault-on-intel-gpus.patch \
%D%/packages/patches/beancount-disable-googleapis-fonts.patch \
%D%/packages/patches/beignet-correct-file-names.patch \
%D%/packages/patches/bidiv-update-fribidi.patch \
Expand Down
4 changes: 3 additions & 1 deletion gnu/packages/admin.scm
Original file line number Diff line number Diff line change
Expand Up @@ -775,7 +775,9 @@ console.")
(file-name (git-file-name name version))
(sha256
(base32
"0vgw6hwqh6zbzrvrn3i0xwi9ykm1qdvhqcyz3mjakd7w303lx603"))))
"0vgw6hwqh6zbzrvrn3i0xwi9ykm1qdvhqcyz3mjakd7w303lx603"))
(patches
(search-patches "btop-fix-segfault-on-intel-gpus.patch"))))
(build-system gnu-build-system)
(native-inputs (list lowdown))
(arguments
Expand Down
49 changes: 49 additions & 0 deletions gnu/packages/patches/btop-fix-segfault-on-intel-gpus.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
From 0ed4e9e907b3a3f1c2ae209b1dab384b1fa7a490 Mon Sep 17 00:00:00 2001
From: "Artyom V. Poptsov" <[email protected]>
Date: Sun, 3 Nov 2024 09:02:45 +0300
Subject: [PATCH] intel_name_lookup_shim.c (get_intel_device_name): Fix
SEGFAULT

btop would always fail with "Segmentation fault" when used on machines where the
GPU does not have a codename (e.g. on embedded Intel graphics on Intel(R)
Atom(TM) CPU D2500.) The reason for this behavior is that when a GPU does not
have codename (it is NULL) the call to "strcpy" segfaults as the procedure
effectively tries to access a NULL pointer.

See <https://github.com/aristocratos/btop/pull/958>.

* src/linux/intel_gpu_top/intel_name_lookup_shim.c (get_intel_device_name): Add
a check if "info->codename" is null; if it is, set the device name to
"(unknown)" to prevent the SEGFAULT error.
---
src/linux/intel_gpu_top/intel_name_lookup_shim.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/linux/intel_gpu_top/intel_name_lookup_shim.c b/src/linux/intel_gpu_top/intel_name_lookup_shim.c
index e714f80..38f87fa 100644
--- a/src/linux/intel_gpu_top/intel_name_lookup_shim.c
+++ b/src/linux/intel_gpu_top/intel_name_lookup_shim.c
@@ -84,10 +84,14 @@ char *get_intel_device_name(const char *device_id) {
char full_name[256];
const struct intel_device_info *info = intel_get_device_info(devid);
if (info) {
- strcpy(dev_name, info->codename);
- dev_name[0] = toupper(dev_name[0]);
+ if (info->codename == NULL) {
+ strcpy(dev_name, "(unknown)");
+ } else {
+ strcpy(dev_name, info->codename);
+ dev_name[0] = toupper(dev_name[0]);
+ }
snprintf(full_name, sizeof(full_name), "Intel %s (Gen%u)", dev_name, info->graphics_ver);
return strdup(full_name);
}
return NULL;
-}
\ No newline at end of file
+}

base-commit: 2e7208d59c54515080027a5ecbb89d2054047985
--
2.46.0

0 comments on commit da70c25

Please sign in to comment.