Skip site navigation (1)Skip section navigation (2)
Date:      Wed,  1 Sep 1999 14:43:50 -0700 (PDT)
From:      proett@nas.nasa.gov
To:        freebsd-gnats-submit@freebsd.org
Subject:   kern/13532: bad vm mfs interaction
Message-ID:  <19990901214350.6F73E14E2C@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         13532
>Category:       kern
>Synopsis:       bad vm mfs interaction
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Sep  1 14:50:00 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator:     Tom Proett
>Release:        3.2 stable
>Organization:
MRJ Inc.
>Environment:
FreeBSD sensei.nas.nasa.gov 3.2-STABLE FreeBSD 3.2-STABLE #5: Wed Aug  4 11:20:20 PDT 1999     proett@sensei.nas.nasa.gov:/usr/src/sys/compile/SENSEI  i386

>Description:
Using a memory file system and a memory intensive program at the same
time can result in the system hanging.  Running the program below twice
results in a gradual death spiral.  Most procs are waiting on "newbuf".
Here is the output of "top" after things froze:

last pid: 30140;  load averages:  3.05,  1.65,  1.24   up 24+21:50:02  13:30:19
32 processes:  5 running, 26 sleeping, 1 stopped
CPU states:  0.4% user,  0.0% nice,  0.0% system,  1.6% interrupt, 98.1% idle
Mem: 15M Active, 27M Inact, 14M Wired, 1968K Cache, 7336K Buf, 804K Free
Swap: 200M Total, 127M Used, 72M Free, 64% Inuse

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
  238 nobody    -2  20 14272K 10520K newbuf 465.2H  0.88%  0.88% setiathome
  272 root     -18   0 15112K     0K wswbuf  20.6H  0.00%  0.00% XF86_S3
  210 root       2   0   788K     0K select  12:01  0.00%  0.00% <moused>
  114 root       2 -12  1032K   172K select   9:19  0.00%  0.00% xntpd
   90 root       2   0   404K    60K select   4:59  0.00%  0.00% routed
  170 root       2   0  1304K     0K RUN      0:33  0.00%  0.00% <sendmail>
  166 root      10   0   980K     0K RUN      0:30  0.00%  0.00% <cron>
  105 root       2   0   820K     0K RUN      0:25  0.00%  0.00% <syslogd>
 9812 root       2   0  1320K     0K RUN      0:09  0.00%  0.00% <sshd1>
   30 root     -18   0   101M  7592K wswbuf   0:06  0.00%  0.00% mount_mfs
30086 root       2   0  1312K   156K select   0:02  0.00%  0.00% sshd1
30140 proett    -2   0 25204K  4256K newbuf   0:02  0.00%  0.00% suck
  140 root       2   0  1008K     0K select   0:02  0.00%  0.00% <amd>
  118 daemon     2   0   836K     0K select   0:01  0.00%  0.00% <portmap>
  244 root       2   0  1560K     0K select   0:01  0.00%  0.00% <sshd2>
30132 proett    28   0  1560K   316K RUN      0:01  0.00%  0.00% top
  269 root       2   0  2108K     0K select   0:01  0.00%  0.00% <xdm>
...

>How-To-Repeat:
Run this program twice on a system that uses mfs as /tmp.

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

#define XSIZE   4096

main()
{
        char    *buf;
        int     fsok, memok;
        int     fd;

        fd = open("/tmp/suck.out", O_WRONLY|O_CREAT|O_TRUNC, 0644);
        if (fd == -1) {
                perror("open");
                exit(1);
        }

        fsok = memok = 1;
        while (fsok || memok) {
                if (memok) {
                        buf = malloc(XSIZE);
                        if (buf == NULL) {
                                perror("malloc");
                                memok = 0;
                        }
                }
                if (fsok) {
                        if (write(fd, buf, XSIZE) != XSIZE) {
                                perror("write");
                                fsok = 0;
                        }
                }
        }
        printf("sleeping...\n");
        sleep(500);
        return 0;
}

>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




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