| Message ID | 20251211144527.43224-1-amaury.couderc@est.tech |
|---|---|
| State | Awaiting Upstream |
| Delegated to: | Steve Sakoman |
| Headers | show |
| Series | [review,scarthgap] procps: fixed large pid issue with top | expand |
Hello, Le jeu. 11 déc. 2025 à 15:46, amaury.couderc via lists.openembedded.org <amaury.couderc=est.tech@lists.openembedded.org> a écrit : > > From: Amaury Couderc <amaury.couderc@est.tech> > > procps: fixed large pid issue with top > > top -b -n1 -H -p 92233720368547758071 > signal 11 (SEGV) was caught by top, please > > Signed-off-by: Amaury Couderc <amaury.couderc@est.tech> It looks like this patch is also applicable&needed on master (the fixing patch has not been in a procps release yet). Can you send it there, then, ask for a backport on scarthgap when it gets merged? Thanks! > --- > .../procps/procps/top_large_pid_fix.patch | 52 +++++++++++++++++++ > meta/recipes-extended/procps/procps_4.0.4.bb | 1 + > 2 files changed, 53 insertions(+) > create mode 100644 meta/recipes-extended/procps/procps/top_large_pid_fix.patch > > diff --git a/meta/recipes-extended/procps/procps/top_large_pid_fix.patch b/meta/recipes-extended/procps/procps/top_large_pid_fix.patch > new file mode 100644 > index 0000000000..d7e3141e06 > --- /dev/null > +++ b/meta/recipes-extended/procps/procps/top_large_pid_fix.patch > @@ -0,0 +1,52 @@ > +From f21fc624d960d12afa399af7333d4f9193fb2ffb Mon Sep 17 00:00:00 2001 > +From: Jim Warner <james.warner@comcast.net> > +Date: Tue, 16 Sep 2025 12:00:00 -0500 > +Subject: [PATCH] library: avoid possible segmentation fault, <pids> api > +Upstream-Status: Backport > +[https://gitlab.com/procps-ng/procps/-/commit/5461b50b1a85c5e556c4cd2739ca8ffdbc69399a] > + > +In the issue referenced below, that SEGV was caused by > +passing a '-1' pid to the procps_pids_select function. > +That value, in turn, is caused by providing a LONG_MAX > +or greater number for what was assigned to an integer. > + > +So, this commit will help ensure we avoid a match when > +we should fail plus skip some unproductive libc calls. > + > +[ the same problem occurs in that old 3.3.17 library ] > + > +Reference(s): > +https://gitlab.com/procps-ng/procps/-/issues/394 > + > +Signed-off-by: Jim Warner <james.warner@comcast.net> > +Signed-off-by: Amaury Couderc <amaury.couderc@est.tech> > + > +--- > + library/readproc.c | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/library/readproc.c b/library/readproc.c > +index 2dfe4c9e..d0e039bf 100644 > +--- a/library/readproc.c > ++++ b/library/readproc.c > +@@ -1434,7 +1434,7 @@ static int listed_nextpid (PROCTAB *PT, proc_t *p) { > + pid_t pid = *(PT->pids)++; > + char *path = PT->path; > + > +- if (pid) { > ++ if (pid > 0) { > + snprintf(path, PROCPATHLEN, "/proc/%d", pid); > + p->tid = p->tgid = pid; // this tgid may be a huge fib | > + > +@@ -1546,7 +1546,7 @@ PROCTAB *openproc(unsigned flags, ...) { > + did_stat = 1; > + } > + PT->taskdir = NULL; > +- PT->taskdir_user = -1; > ++ PT->taskdir_user = -2; > + PT->taskfinder = simple_nexttid; > + PT->taskreader = simple_readtask; > + > +-- > +2.43.0 > + > diff --git a/meta/recipes-extended/procps/procps_4.0.4.bb b/meta/recipes-extended/procps/procps_4.0.4.bb > index ec8c4b0261..3c15f28a5b 100644 > --- a/meta/recipes-extended/procps/procps_4.0.4.bb > +++ b/meta/recipes-extended/procps/procps_4.0.4.bb > @@ -15,6 +15,7 @@ inherit autotools gettext pkgconfig update-alternatives > SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https;branch=master \ > file://sysctl.conf \ > file://pidfd.patch \ > + file://top_large_pid_fix.patch \ > " > SRCREV = "4ddcef2fd843170c8e2d59a83042978f41037a2b" > > -- > 2.50.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#227538): https://lists.openembedded.org/g/openembedded-core/message/227538 > Mute This Topic: https://lists.openembedded.org/mt/116729698/4316185 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [yoann.congal@smile.fr] > -=-=-=-=-=-=-=-=-=-=-=- >
diff --git a/meta/recipes-extended/procps/procps/top_large_pid_fix.patch b/meta/recipes-extended/procps/procps/top_large_pid_fix.patch new file mode 100644 index 0000000000..d7e3141e06 --- /dev/null +++ b/meta/recipes-extended/procps/procps/top_large_pid_fix.patch @@ -0,0 +1,52 @@ +From f21fc624d960d12afa399af7333d4f9193fb2ffb Mon Sep 17 00:00:00 2001 +From: Jim Warner <james.warner@comcast.net> +Date: Tue, 16 Sep 2025 12:00:00 -0500 +Subject: [PATCH] library: avoid possible segmentation fault, <pids> api +Upstream-Status: Backport +[https://gitlab.com/procps-ng/procps/-/commit/5461b50b1a85c5e556c4cd2739ca8ffdbc69399a] + +In the issue referenced below, that SEGV was caused by +passing a '-1' pid to the procps_pids_select function. +That value, in turn, is caused by providing a LONG_MAX +or greater number for what was assigned to an integer. + +So, this commit will help ensure we avoid a match when +we should fail plus skip some unproductive libc calls. + +[ the same problem occurs in that old 3.3.17 library ] + +Reference(s): +https://gitlab.com/procps-ng/procps/-/issues/394 + +Signed-off-by: Jim Warner <james.warner@comcast.net> +Signed-off-by: Amaury Couderc <amaury.couderc@est.tech> + +--- + library/readproc.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/library/readproc.c b/library/readproc.c +index 2dfe4c9e..d0e039bf 100644 +--- a/library/readproc.c ++++ b/library/readproc.c +@@ -1434,7 +1434,7 @@ static int listed_nextpid (PROCTAB *PT, proc_t *p) { + pid_t pid = *(PT->pids)++; + char *path = PT->path; + +- if (pid) { ++ if (pid > 0) { + snprintf(path, PROCPATHLEN, "/proc/%d", pid); + p->tid = p->tgid = pid; // this tgid may be a huge fib | + +@@ -1546,7 +1546,7 @@ PROCTAB *openproc(unsigned flags, ...) { + did_stat = 1; + } + PT->taskdir = NULL; +- PT->taskdir_user = -1; ++ PT->taskdir_user = -2; + PT->taskfinder = simple_nexttid; + PT->taskreader = simple_readtask; + +-- +2.43.0 + diff --git a/meta/recipes-extended/procps/procps_4.0.4.bb b/meta/recipes-extended/procps/procps_4.0.4.bb index ec8c4b0261..3c15f28a5b 100644 --- a/meta/recipes-extended/procps/procps_4.0.4.bb +++ b/meta/recipes-extended/procps/procps_4.0.4.bb @@ -15,6 +15,7 @@ inherit autotools gettext pkgconfig update-alternatives SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https;branch=master \ file://sysctl.conf \ file://pidfd.patch \ + file://top_large_pid_fix.patch \ " SRCREV = "4ddcef2fd843170c8e2d59a83042978f41037a2b"