Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Apr 2008 08:54:20 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-stable@freebsd.org, Luke Dean <LukeD@pobox.com>
Subject:   Re: kvm_open: kvm_nlist: No such file or directory
Message-ID:  <200804250854.20524.jhb@freebsd.org>
In-Reply-To: <20080420101554.J57244@border.lukas.is-a-geek.org>
References:  <20080420101554.J57244@border.lukas.is-a-geek.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 20 April 2008 01:38:32 pm Luke Dean wrote:
> A few weeks ago I did a source upgrade from 6.2 to 7-STABLE.  I didn't
> "make delete-old" so a bunch of old libraries and such were left lying
> around causing problems when I rebuilt all my ports.  I'd read about some
> recent improvements to DDB and SCHED_ULE in 7-STABLE, and it's a miserable
> snowy weekend in Seattle right now, so I decided I'd take this opportunity
> to update my system to the latest 7-STABLE and get rid of those old
> libraries properly this time.
>
> Now sysutils/wmmemmon and sysutils/wmcpuload stopped working.
> Both die with:
> kvm_open: kvm_nlist: No such file or directory
> error extracting symbols
>
> I found two PRs for other ports (ascpu and wmcube-gdk) to fix similar
> problems, but they seem to be related to 8-CURRENT.  The solution in both
> of these cases is to use sysctls instead of using kvm.
> PR numbers are 119923 and 120142.
>
> My question is should the existing code work in 7-STABLE or do wmmemmon
> and wmcpuload need to be changed to use sysctls?
> They worked for me for a couple of weeks on 7-STABLE, but like I said, I
> had old libraries lying around and some of the windowmaker stuff
> chose to link to them.
> I have since cleaned up my system and rebuilt (I believe) everything and
> now the ports no longer work.
>
> This is what I believe is the offending code snippet from
> sysutils/wmmemmon's mem_freebsd.c file:

Yes, cp_time[] is no more.  Make them use the sysctl (kern.cp_time) instead.

> --------------------------------------------------------------
> static kvm_t *kvm_data = NULL;
> static int pageshift;
> static struct nlist nlst[] = { {"_cp_time"}, {"_cnt"}, {0} };
>
> /* initialize function */
> void mem_init(void)
> {
>      int pagesize = getpagesize();
>      pageshift = 0;
>
>      while (pagesize > 1) {
>     pageshift++;
>     pagesize >>= 1;
>      }
>
>      kvm_data = kvm_open(NULL, NULL, NULL, O_RDONLY, "kvm_open");
>
>      if (kvm_data == NULL) {
>     fprintf(stderr, "can't open kernel virtual memory");
>     exit(1);
>      }
>      kvm_nlist(kvm_data, nlst);
>
>      if (nlst[0].n_type == 0 || nlst[1].n_type == 0) {
>     fprintf(stderr, "error extracting symbols");
>     exit(1);
>      }
>
> _______________________________________________
> freebsd-stable@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org"



-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200804250854.20524.jhb>