From owner-svn-src-head@freebsd.org Thu Dec 28 16:27:03 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ABCD5EA7777; Thu, 28 Dec 2017 16:27:03 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mailout.stack.nl (mailout05.stack.nl [IPv6:2001:610:1108:5010::202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.stack.nl", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 770B81568; Thu, 28 Dec 2017 16:27:03 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from toad2.stack.nl (toad2.stack.nl [IPv6:2001:610:1108:5010::161]) by mailout.stack.nl (Postfix) with ESMTP id 94BF93F; Thu, 28 Dec 2017 17:25:25 +0100 (CET) Received: by toad2.stack.nl (Postfix, from userid 1677) id 8B24C892B5; Thu, 28 Dec 2017 17:25:25 +0100 (CET) Date: Thu, 28 Dec 2017 17:25:25 +0100 From: Jilles Tjoelker To: Antoine Brodin Cc: Mateusz Guzik , David Chisnall , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r325726 - head/sys/kern Message-ID: <20171228162525.GA32705@stack.nl> References: <201711112239.vABMdXS2053880@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.8.0 (2017-02-23) X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Dec 2017 16:27:03 -0000 On Thu, Dec 28, 2017 at 12:40:31PM +0000, Antoine Brodin wrote: > On Sat, Nov 11, 2017 at 10:39 PM, Mateusz Guzik wrote: > > Author: mjg > > Date: Sat Nov 11 22:39:33 2017 > > New Revision: 325726 > > URL: https://svnweb.freebsd.org/changeset/base/325726 > > Log: > > Avoid locking and refing in sysctl_kern_proc_args if possible. > > Turns out the sysctl is called a lot e.g. by pkg-static. > > Modified: > > head/sys/kern/kern_proc.c > There is a regression after this commit: x11-toolkits/gnustep-gui no > longer builds. > You can find a failure log at > http://pb2.nyi.freebsd.org/data/111i386-default-PR224618/2017-12-28_12h28m51s/logs/errors/gnustep-gui-0.25.1_3.log > The failure seems to be from lang/gnustep-base: > /* get the argument vectors */ > vectors = kvm_getargv(kptr, proc_ptr, 0); It looks like the new fast path only works properly if p->p_args is not NULL. If p->p_args is NULL, this usually means that the arguments are longer than ps_arg_cache_limit and must be retrieved from (pageable) process memory and not wired p->p_args->ar_args. It is possible to duplicate that piece of code as well but that is probably not worth it. A simple reproducer is sh -c 'n=$(sysctl -n kern.ps_arg_cache_limit); exec ps -p "$$" -o "args=$(printf "%0${n}d" 0)"' On head, the second line is [ps] indicating that KERN_PROC_ARGS did not return the expected string. On stable/10 and stable/11, the second line is a truncated version of the command line like ps -p 86963 -o args=0000000000000000000000000000000000000000000000000000000000 A prerequisite for this reproducer is that kern.ps_arg_cache_limit is not set so high that it is impractical to exceed it but not {ARG_MAX}. -- Jilles Tjoelker