On 03/20/2012 11:39 PM, Salvatore CRO' wrote:
> In test3, parent just wait for one child to exit but it
> actually has 10.
hi, Salvatore

yes, you are right, but your patch didn't resolve the issue completely.
comments in-line.

> As it could happen there may be other children around that
> didn't get yet the chance to exit, they will get signaled
> by ltp-pan (SIGTERM) and pollute the output of subsequent
> test (setrlimit02).
> Parent definitely needs to wait for all children to exit.
>
> Signed-off-by: Salvatore Cro<[email protected]>
> ---
>   testcases/kernel/syscalls/setrlimit/setrlimit01.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c 
> b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> index ac32450..430835c 100644
> --- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> +++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> @@ -267,7 +267,7 @@ void test3()
>                       exit(0);
>               }
>       }
> -     waitpid(pid,&status, 0);
> +     while(wait(&status)>  0) { /* no-op */ ; }
>       if (WEXITSTATUS(status) != 0) {
>               tst_resm(TFAIL, "RLIMIT_NPROC functionality is not correct");
>       } else {
if one child exit unexpectedly, e.g: exit(9);
the case can't catch it. how about this patch set:

diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c 
b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
index ac32450..ec3e54e 100644
--- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
+++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
@@ -226,6 +226,8 @@ void test2()
   */
  void test3()
  {
+       int flag = 0;
+
         if (getrlimit(RLIMIT_NPROC, &save_rlim) < 0) {
                 tst_brkm(TBROK, cleanup, "getrlimit failed, errno: %d", 
errno);
         }
@@ -267,12 +269,16 @@ void test3()
                         exit(0);
                 }
         }
-       waitpid(pid, &status, 0);
-       if (WEXITSTATUS(status) != 0) {
-               tst_resm(TFAIL, "RLIMIT_NPROC functionality is not 
correct");
-       } else {
-               tst_resm(TPASS, "RLIMIT_NPROC functionality is correct");
+       while (wait(&status) > 0) {
+               if (WEXITSTATUS(status) != 0) {
+                       tst_resm(TFAIL,
+                           "RLIMIT_NPROC functionality is not correct");
+                       flag = 1;
+               }
         }
+
+       if (flag == 0)
+               tst_resm(TPASS, "RLIMIT_NPROC functionality is correct");
  }

  /*


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to