Hi,all 
when I run the below test program : 
#./hugemmap04 -I 3600 -H /var/hugetlbfs 
I found it returned quickly. 
I used gdb tool to debug it, it returned error with the 'SEGBUS' signal error, 
and the error occurred in the 178 lines '*(int*)addr = 0;'. 
it's okay when I add this line 
write(fildes, "write some words to the TEMPFILE file\n",40); 
you can run this c program to find the error : 
$ cat test.c 
#include <stdio.h> 
#include <stdlib.h> 
#include <fcntl.h> 
#include <sys/mman.h> 
char * TEMPFILE="mmapfile"; 
int freepages = 0; 
int main() 
{ 
long *addr; 
int fd; 
long long mapsize; 
if ((fd = open(TEMPFILE, O_RDWR | O_CREAT | O_TRUNC,00777)) < 0) { 
printf("open error\n"); 
return -2; 
} 
freepages = 100; 
mapsize =(long long)freepages * 2048 * 1024; 
printf("mapsize is %lld \n",mapsize); 
addr = (long *)mmap(NULL,mapsize, 
PROT_READ | PROT_WRITE, MAP_SHARED, fd,0); 
if (addr == MAP_FAILED) { 
printf("mmap error\n"); 
return -1; 
} 
/* if you enable this line,there will be no error. */ 
//write(fd,"just write some words.\n",20); 
*(int *)addr = 0; 
printf("Successfully!\n"); 
close(fd); 
return 0; 
} 
$./test 
mapsize is 209715200 
Bus error (core dumped) 

--------------------------------------------------------------------------------
 
v2: modified the patch's format 
Signed-off-by: Zhouping Liu < [email protected] > 
--- 
>From 81b15a0b8a4de0aab5a9b5e720522681b41c70ca Mon Sep 17 00:00:00 2001
From: Zhouping Liu <[email protected]>
Date: Thu, 25 Nov 2010 17:08:54 +0800
Subject: [PATCH] fix a SEGBUS signal error about hugemmap


Signed-off-by: Zhouping Liu <[email protected]>
---
 testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
index 485b465..8ec984b 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
@@ -174,6 +174,8 @@ main(int ac, char **av)
 			continue;
 		} else {
 			tst_resm(TPASS, "Succeeded mapping file using %d pages",freepages);
+			/* the write function just do initialization */
+			write(fildes, " write some words to the TEMPFILE file\n",40);
 			/* force to allocate page and change HugePages_Free */
 			*(int*)addr = 0;
 		}
-- 
1.7.2.3

------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to