Re: [LTP] [patch]ltp-intermediate-20100119/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c

Crossover Lonely
2010-01-21T02:14:41Z

[-- Attachment #1.1: Type: text/plain, Size: 6200 bytes --]

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 <liubo2009@cn.fujitsu.com>

> 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 <crosslonelyover@gmail.com> <crosslonelyover@gmail.com>
>
> 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 listLtp-list@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/ltp-list
>
>
>

[-- Attachment #1.2: Type: text/html, Size: 7168 bytes --]