On Wed, 11 Aug 1999 20:48:08 +0400 (MSD) 
 Oleg Derevenetz <[EMAIL PROTECTED]> wrote:

 > This small program, running as 'mmap', not 'mmap -u', can hang my machine. 
 > Is this a known bug in FreeBSD's kernel, or it is my fantasy ? 
 > Thank you for answer.

If it hangs your system, must be a bug in FreeBSD.  Here is what happens
on a NetBSD/alpha system:

bishop:thorpej 26$ ./mmap-bug 
unlink files? NO
mmaping 10485760 byte region on file 0
Memory fault (core dumped) 
bishop:thorpej 27$ ./mmap-bug -u
unlink files? YES
mmaping 10485760 byte region on file 0
Memory fault (core dumped) 
bishop:thorpej 28$ 

...which is correct.  There isn't any backing store for the region
you've mapped.

 > 
 > #include <stdio.h>
 > #include <stdlib.h>
 > #include <sys/types.h>
 > #include <sys/mman.h>
 > #include <unistd.h>
 > #include <fcntl.h>
 > #include <errno.h>
 >   
 > main(int argc, char *argv[])
 > {
 >      int fd;
 >      int i;
 >      int len=1024*1024*10;  /*ie 10Mbytes*/
 >      caddr_t addr;
 >      char ttt[80];
 >      int bunlink = 0;
 >  
 >      if ( argc > 1 && strcmp(argv[1], "-u") == 0 ) {
 >        bunlink = 1;
 >      }
 >      printf("unlink files? %s\n", bunlink ? "YES" : "NO");
 >    
 >      for (i=0;;i++)
 >      {
 >      sprintf (ttt,"%d",i);
 >      printf("mmaping %ld byte region on file %s\n", len, ttt);
 >      fd=open(ttt,O_CREAT|O_RDWR,0666);
 >      if (fd<0)
 >      {
 >         printf("mmap error %ld",errno);
 >         exit(1);
 >      }
 >      memset(addr,'x',len);
 >      if ( munmap(addr, len) != 0 ) {
 >        fprintf(stderr, "munmap failed\n");
 >        exit(EXIT_FAILURE);
 >      }
 >      close(fd);
 >      if ( bunlink ) unlink(ttt);
 >      }
 > }
 > 
 > 
 > To Unsubscribe: send mail to [EMAIL PROTECTED]
 > with "unsubscribe freebsd-hackers" in the body of the message

        -- Jason R. Thorpe <[EMAIL PROTECTED]>



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to