lkml.org 
[lkml]   [1996]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Subjectmmap()'d file contents disappear
Date
From
 I am confused by mmap()'d file contents disappearance.
First, I noticed that content of /etc/psdevtab were filled by 0x00.
(/etc/psdevtab is created by porgrams in procps-0.99a(w, ps,..))
Removing /etc/psdevtab and re-create it by 'w'/'ps'. It goes good.
Few hours after, /etc/psdevtab filled by 0x00 again....
Time stamps({a,m,c}_time) were not changed from when that was created.

After some trial and error, I tested following.
'mmtest1' is munmap()'ed, 'mmtest2' is not.
Immediately after excuting this,
># od -h mmtest1
>0000000 0101 0101 0101 0101 0101 0101 0101 0101
>*
>0030000
># od -h mmtest2
>0000000 0202 0202 0202 0202 0202 0202 0202 0202
>*
>0030000

But after few hours(or a day, or after something done...)

># od -h mmtest1
>0000000 0101 0101 0101 0101 0101 0101 0101 0101
>*
>0030000
># od -h mmtest2
>0000000 0000 0000 0000 0000 0000 0000 0000 0000
>*
>0030000

I think I found such behavior at updateing kernel to 1.3.94.
Same at 1.3.95.
Procps does't munmap().
I guess disappearing /etc/psdevtab and mmtest2 are same reason.

--
/*
* first of all, create two test files.
* dd if=/dev/zero of=mmtest1 bs=12288 count=1
* dd if=/dev/zero of=mmtest2 bs=12288 count=1
*/
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>

#define LEN 12288
#define FNAM1 "/tmp/mmtest1"
#define FNAM2 "/tmp/mmtest2"

main()
{
caddr_t p;
int fd;
int i, j;

if ((fd = open(FNAM1, O_RDWR)) < 0) {
perror("open");
exit(1);
}
p = mmap(0, LEN, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, 0);
if (p == (caddr_t) -1) {
perror("mmap");
exit(1);
}
close(fd);
memset((void *) p, 1, LEN);
munmap(p, LEN);

if ((fd = open(FNAM2, O_RDWR)) < 0) {
perror("open");
exit(1);
}
p = mmap(0, LEN, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, 0);
if (p == (caddr_t) -1) {
perror("mmap");
exit(1);
}
close(fd);
memset((void *) p, 2, LEN);
}

----_--__---_-_-_-__--_-__-__---_-_----_--_-_---_---_----
_/ TANAKA Yoshitomo _//
/ Suginami-ku Tokyo, Japan _// serow@silkwood.rim.or.jp


\
 
 \ /
  Last update: 2005-03-22 13:37    [W:0.047 / U:0.384 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site