Messages in this thread | | | Date | Wed, 28 Jan 2009 19:28:41 +0900 | From | MinChan Kim <> | Subject | [BUG] mlocked page counter mismatch |
| |
After executing following program, 'cat /proc/meminfo' shows following result.
-- # cat /proc/meminfo .. Unevictable: 8 kB Mlocked: 8 kB ..
-- test program --
#include <stdio.h> #include <sys/mman.h> int main() { char buf[64] = {0,}; char *ptr; int k; int i,j; int x,y; mlockall(MCL_CURRENT); sprintf(buf, "cat /proc/%d/maps", getpid()); system(buf); return 0; }
--
It seems mlocked page counter have a problem. After I diged in source, I found that try_to_unmap_file called try_to_mlock_page about shared mapping pages since other vma had VM_LOCKED flag. After all, try_to_mlock_page called mlock_vma_page. so, mlocked counter increased
But, After I called munlockall intentionally, the counter work well. In case of munlockall, we already had a mmap_sem about write. Such a case, try_to_mlock_page can't call mlock_vma_page. so, mlocked counter didn't increased. As a result, the counter seems to be work well but I think it also have a problem.
| |