Re: [REGRESSION] Two issues that prevent process accounting (taskstats) from working correctly

From: Peter Zijlstra
Date: Mon Dec 19 2016 - 12:26:09 EST



On Mon, Dec 19, 2016 at 01:06:00PM +0100, Martin Steigerwald wrote:
>
> 2) When using the NETLINK inface, the command TASKSTATS_CMD_GET
> consequently returns -EINVAL.
>
> The code that is used by the atopacctd daemon is based on the demo code
> 'getdelays.c' that can be found in the kernel source code tree
> (..../linux/Documentation/accounting/getdelays.c). Also this 'getdelays'
> program does not work any more (also -EINVAL on the same call)
> with the newer kernels. I really spent a lot of time on this issue to
> get the code running (there are many places in the kernel code where
> -EINVAL for this call can be given), but I did not succeed. It is really
> an incompatibility introduced by the kernel code.
> It would be nice if the kernel maintainers provide a working version of
> the getdelays program in the kernel source tree.
>
> I only experience this problem on Debian8 with a 4.8 kernel (virtual
> machine with 4 cores).
> On CentOS7 with a 4.8 kernel it works fine (physical machine with 4 cores).
>
> I will anyhow adapt atopacctd for this issue that it detects and logs
> the -EINVAL and terminates.
> The current version of atopacctd keeps running which is not useful at all.
>
>
> I reported this as:
>
> Bug 190711 - Process accounting: Using the NETLINK inface, the command
> TASKSTATS_CMD_GET returns -EINVAL
>
> https://bugzilla.kernel.org/show_bug.cgi?id=190711


Ben Hutchings reports:

"It looks like the taskstats bug was introduced by 513e3d2d11c9 as that
means cpumask_parse() may not initialise as many bits as
cpumask_subset() compares"