GNUstep and libkvm

Doug White dwhite at gumbysoft.com
Tue Feb 22 03:17:35 GMT 2005


On Sun, 20 Feb 2005, Pascal Hofstee wrote:

> A while ago i initiated a thread on hackers@ requesting additional
> information regarding a known issue with the gnustep-gui port "needing
> /proc" even when gnustep-base itself (which in turn is used by -gui)
> was compiled without procfs support.
>
> The results of my findings can be found in the following list-archive entries:
>
> http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg49357.html
> http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg49577.html
>
> Short summary is the kvm_getargv function seems to trigger a kvm_uread
> call when the length of "command + argumentlist" exceeds the value of
> kern.ps_arg_cache_limit.
>
> This kvm_uread call is responsible for the observed /proc groveling.
> I had hoped to acquire some additional information on how to properlly
> debug libkvm in GDB and if this /proc dependency is intended behavior.

You could just read the code :-)  libkvm is a userspace library, source is
in src/lib/libkvm.

> To me personally (though i am not a kernel hacker) it doens't really
> make sense to have libkvm (which is intended to be a 'replacement' for
> /proc to my understanding)  intenrally depend on the same system it's
> trying to 'replace', though I noticed from the manpages that the
> kvm_getargv function doesn't really belong in libkvm.

libkvm is actually "legacy"; /proc came after it, but we've been moving
away from requiring procfs since its skilled at opening security holes.
libkvm originally needed to grovel in /dev/kmem and much of that has
migrated to using special-purpose sysctls.

> Can anybody at least either confirm wether or not this is
> - intended behavior
> - a bug and a proper PR should likely be created

ps(1) sets up some flags to avoid needing it on -CURRENT and RELENG_5; you
might reference that for how to use the sysctl to read the ps information.
There is some information that is only available via /proc, though; the
process environment is an easy example (and ps throws an error if you
specify -e and procfs isn't available).

-- 
Doug White                    |  FreeBSD: The Power to Serve
dwhite at gumbysoft.com          |  www.FreeBSD.org


More information about the freebsd-current mailing list