Date: Wed, 22 Jan 1997 06:18:31 +1100 From: Bruce Evans <bde@zeta.org.au> To: mark@grondar.za, syssgm@devetir.qld.gov.au Cc: freebsd-current@freebsd.org Subject: Re: VM bogon? Was: Re: NIS breakage Message-ID: <199701211918.GAA15684@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>Stephen McKay wrote:
>> In fact, I'm now so keen on my hypothesis that I've written some code.
>> Unfortunately, I have no -current box to test it on. Thus, if Mr Murry
>> wishes to risk all, the following patch may help.
>>
>> ** WARNING ** I have done no testing at all on this patch. ** WARNING **
>>
>>
>> --- support.s Tue Jan 21 11:48:00 1997
>> +++ support.s.new Tue Jan 21 19:43:35 1997
>
>It works! You are brilliant, sir!
>
>I have no more portmap bombing out, and ypbind is no longer giving these
>bogus "bad address" turds.
I duplicated the problem on a 486 configured as a 386. I used the enclosed
program to force other processes out to swap (run /usr/bin/vi, then memhog,
then check that vi has an RSS of 0, then hit a key in vi. vi always gets
EFAULT for reading a 255-buye buffer).
The bug probably also occurs in suword(), susword() and subyte().
susword() and susword() are also buggy on 386's if the [s]word crosses a
page boundary.
Bruce
/* memhog.c */
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <err.h>
#include <stdlib.h>
#include <stdio.h>
/*
* XXX this doesn't work to override /etc/malloc.conf, but since I have
* < DFL_DSIZE of swap, the swap pager will kill the process before
* malloc() fails.
*/
char *malloc_options = "";
int main(void)
{
int i;
struct rlimit rl;
char *p;
rl.rlim_cur = RLIM_INFINITY;
rl.rlim_max = RLIM_INFINITY;
if (setrlimit(RLIMIT_DATA, &rl) != 0)
err(1, "setrlimit(RLIMIT_DATA)");
if (setrlimit(RLIMIT_RSS, &rl) != 0)
err(1, "setrlimit(RLIMIT_RSS)");
for (i = 0; ; ++i)
{
p = malloc(0x1000);
/* Consume real memory. */
if (p != NULL) {
fprintf(stderr, "%d ", i);
*p = 1;
}
}
}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199701211918.GAA15684>
