[Bug 245318] procstat_getprocs() noise on stderr
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Apr 3 15:41:41 UTC 2020
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=245318
Bug ID: 245318
Summary: procstat_getprocs() noise on stderr
Product: Base System
Version: 12.1-RELEASE
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: kern
Assignee: bugs at FreeBSD.org
Reporter: jwb at freebsd.org
I think a process count of 0 in procstat_getprocs() is not necessarily an error
and this should not trigger a message to stderr.
The code below demonstrates the issue, assuming 1000 is not part of a process
group. Tweak the value if necessary.
If procstat_getprocs() does not find any processes in the group, it returns 0
via the *count argument as expected, but also prints a warning to stderr using
warnx():
kinfo_proc structure size mismatch (len = 0)
The warnx() call can be found in /usr/src/lib/libprocstat/libprocstat.c.
It seems to be that the action to be taken when count == 0 should be left to
the caller.
#include <stdio.h>
#include <sysexits.h>
#include <sys/param.h>
#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/user.h>
#include <sys/sysctl.h>
#include <libprocstat.h>
int main(int argc,char *argv[])
{
unsigned pgid = 1000,
pid_count;
struct procstat *proc_info;
struct kinfo_proc *proc_list;
// FILE *procstat_err;
proc_info = procstat_open_sysctl();
// Silence warnx()
// procstat_err = fopen("/dev/null", "w+");
// err_set_file(procstat_err);
proc_list = procstat_getprocs(proc_info, KERN_PROC_PGRP, pgid,
(unsigned *)&pid_count);
// fclose(procstat_err);
procstat_freeprocs(proc_info, proc_list);
procstat_close(proc_info);
return EX_OK;
}
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list