From: liubo <liu...@cn...> - 2010-01-21 03:56:29
|
Hi, The hugeshmget01 case is designed for testing standard SYSV shared memory system calls "shmget", and it do need a few concurrent copies in order to fulfill a multi-process memory-allocated environment. IMO, "-c Xnumber" is needed. Thanks, Liu Bo On 01/21/2010 10:14 AM, Crossover Lonely wrote: > It works! > But isn't weird? Why just use ./hugeshmget won't work? > I traced it, and found it calls tsg_sig() in setup(): > tst_sig(NOFORK, DEF_HANDLER, cleanup); > and in tsg_sig(): > ... > case SIGCLD: > if (fork_flag == FORK || STD_COPIES > 1) > continue; > > default: > if (tst_setup_signal(sig, handler) == SIG_ERR) > tst_resm(TWARN | TERRNO, > "signal() failed for signal %d", sig); > break; > ... > > so here hugeshmget set its action to SIGCLD to handler - here is > def_handler(), which can > rise "Unexpected signal %d received." message when recived SIGCLD. > static void def_handler(int sig) > { > /* > * Break remaining test cases, do any cleanup, then exit > */ > tst_brkm(TBROK, 0, "Unexpected signal %d received.", sig); > > /* now cleanup and exit */ > if (T_cleanup) > (*T_cleanup) (); > > tst_exit(); > } > > So I think it's better to correct it! > > Thanks and Best Regards, > shenghui > > 2010/1/21 liubo <liu...@cn...> > > >> Hi, >> >> In my box, I can add -c Xnumber to avoid the unexpect signal, >> for example, ./hugeshmget -c 10. Maybe you can try this as well. >> >> Thanks, >> Liu Bo >> >> >> On 01/21/2010 08:50 AM, Crossover Lonely wrote: >> >> For your convenience, I just made to patches against the signle file, not >> the whole directory. >> >> solution 1======================= >> --- hugeshmget01.c 2009-11-20 00:05:21.000000000 +0800 >> +++ hugeshmget01_2.c 2010-01-21 08:43:11.790533086 +0800 >> @@ -78,14 +78,14 @@ >> tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); >> } >> >> - setup(); /* global setup */ >> - >> /* The following loop checks looping state if -i option given */ >> if ( get_no_of_hugepages() <= 0 || hugepages_size() <= 0 ) >> tst_brkm(TBROK, cleanup, "Test cannot be continued owning to >> sufficient availability of Hugepages on the system"); >> else >> huge_pages_shm_to_be_allocated = ( get_no_of_hugepages() * >> hugepages_size() * 1024) / 2 ; >> >> + setup(); /* global setup */ >> + >> for (lc = 0; TEST_LOOPING(lc); lc++) { >> /* reset Tst_count in case we are looping */ >> Tst_count = 0; >> >> >> solution 2============================== >> --- hugeshmget01.c 2009-11-20 00:05:21.000000000 +0800 >> +++ hugeshmget01_1.c 2010-01-21 08:41:56.350057513 +0800 >> @@ -160,7 +160,7 @@ >> setup(void) >> { >> /* capture signals */ >> - tst_sig(NOFORK, DEF_HANDLER, cleanup); >> + tst_sig(FORK, DEF_HANDLER, cleanup); >> >> /* Pause if that option was specified */ >> TEST_PAUSE; >> >> >> 2010/1/21 Crossover Lonely <cro...@gm...> <cro...@gm...> >> >> Hi all, >> >> When the hugeshmget01 runs, it gets unexpected signal SIGCHLD/SIGCLD, >> and thus stops immediately. >> I found two ways to resolve this problem. Please refer to the >> following for two kinds of patch. >> Well, according to other code structures of hugeshmget0*.c, solution 1 >> is preferred. But for get_no_of_hugepages >> will call popen(), so I think the second solution is the right one. >> Will you please choose the right one to apply to >> ltp-intermediate-20100119 package? >> Looking forward to your confirmation! >> >> Thanks and Best Regards, >> shenghui >> >> Solution 1=============================================================== >> >> diff -Nur >> ltp-intermediate-20100119-origin/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c >> ltp-intermediate-20100119/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c >> --- >> ltp-intermediate-20100119-origin/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c >> 2010-01-21 07:51:55.926035076 +0800 >> +++ >> ltp-intermediate-20100119/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c >> 2010-01-21 08:14:05.470032624 +0800 >> @@ -78,14 +78,14 @@ >> tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); >> } >> >> - setup(); /* global setup */ >> - >> /* The following loop checks looping state if -i option given */ >> if ( get_no_of_hugepages() <= 0 || hugepages_size() <= 0 ) >> tst_brkm(TBROK, cleanup, "Test cannot be continued owning to >> sufficient availability of Hugepages on the system"); >> else >> - huge_pages_shm_to_be_allocated = ( get_no_of_hugepages() * >> hugepages_size() * 1024) / 2 ; >> - >> + huge_pages_shm_to_be_allocated = ( get_no_of_hugepages() * >> hugepages_size() * 1024) / 2 ; >> + >> + setup(); /* global setup */ >> + >> for (lc = 0; TEST_LOOPING(lc); lc++) { >> /* reset Tst_count in case we are looping */ >> Tst_count = 0; >> >> >> Solution >> 2========================================================================================= >> diff -Nur >> ltp-intermediate-20100119-origin/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c >> ltp-intermediate-20100119/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c >> --- >> ltp-intermediate-20100119-origin/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c >> 2010-01-21 07:51:55.926035076 +0800 >> +++ >> ltp-intermediate-20100119/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c >> 2010-01-21 08:16:46.122032889 +0800 >> @@ -160,7 +160,7 @@ >> setup(void) >> { >> /* capture signals */ >> - tst_sig(NOFORK, DEF_HANDLER, cleanup); >> + tst_sig(FORK, DEF_HANDLER, cleanup); >> >> /* Pause if that option was specified */ >> TEST_PAUSE; >> >> >> >> ------------------------------ >> >> ------------------------------------------------------------------------------ >> Throughout its 18-year history, RSA Conference consistently attracts the >> world's best and brightest in the field, creating opportunities for Conference >> attendees to learn about information security's most important issues through >> interactions with peers, luminaries and emerging and established companies.http://p.sf.net/sfu/rsaconf-dev2dev >> >> ------------------------------ >> >> _______________________________________________ >> Ltp-list mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/ltp-list >> >> >> >> > > |