VM problem? User exorcises Daemons!

D. J. Vanecek (djv@bedford.net)
Sun, 15 Jun 1997 16:30:07 -0400 (EDT)

Consider the following program, called "maxm":

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

int main(int argc, char **argv)
char *try; size_t i;

for(i=1024;;i*=2) {
if(try==NULL) {
printf("Maxed out around %d\n", i);
memset(try, 0, i);
printf("Succeeded with %d\n", i);
return 0;

Compiled with gcc (fortran-patched), libc 5.3.12 on
kernel 2.0.27, machine with 24MB hard and 32MB swap memory. (486DX/33MHz).
IDE disk.

**RUN BY UNPRIVILEGED USER**, ulimit is at 2GB vm.

A single instance poops out, as expected, after 32MB. No problems.

Then run three simulaneously:
maxm &
maxm &
maxm &
from bash. System fairly idle at the time.

This succeeded in killing named, klogd, something from NFS, with
console messages about "No memory for blah-blah". Then the bash
instance was killed, without comment. The kernel didn't panic,
but these daemons were gone.

Hmm, a user process can kill off daemons belonging to root.

Is this to be expected? (Answer: Better not be...) Is this a bug
in the memory management system? (Looks that way.)




   "A cloud of critics, of compilers, of commentators, darkened
   the face of learning, and the decline of genius was soon
   followed by the corruption of taste."
   		-- GIBBON