public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: "Mitani" <mitani@ryobi.co.jp>
To: 'Garrett Cooper' <yanegomi@gmail.com>
Cc: ltp-list@lists.sourceforge.net
Subject: Re: [LTP] "nanosleep{02~04}" testcase failed
Date: Tue, 22 Dec 2009 14:17:21 +0900	[thread overview]
Message-ID: <000001ca82c6$09f0ec40$1dd2c4c0$@co.jp> (raw)
In-Reply-To: <364299f40912211845u5b20d868ucaaa0a397a3658f1@mail.gmail.com>


I revised patch into "WIFEXITED(status) && WEXITSTATUS(status) == 0", and tried to test.
After that, "nanosleep" could work correctly.
I agree with your proposal. 

Thank you for your help!

-Tomonori Mitani

-----Original Message-----
From: Garrett Cooper [mailto:yanegomi@gmail.com] 
Sent: Tuesday, December 22, 2009 11:45 AM
To: Mitani
Cc: ltp-list@lists.sourceforge.net
Subject: Re: [LTP] "nanosleep{02~04}" testcase failed

2009/12/20 Mitani <mitani@ryobi.co.jp>:
> Hi,
>
> I found that "nanosleep{02~04}" testcase failed like follow example.
> ----------
> nanosleep02    1  TFAIL  :  child process exited abnormally
> ----------
>
> In ${LTPROOT}/testcases/kernel/syscalls/nanosleep/nanosleep{02~04}.c,
> WEXITSTATUS(status) is used to judge whether child process did exit
> normally.
> But WEXITSTATUS macro is used only when WIFEXITED macro returned "true".
> So, it cannot get the correct results and it terminated with the above
> error.
>
> To solve this problem, I thought that we had better use WIFEXITED macro
> instead of the WEXITSTATUS macro.
> Here are patches to fix these problem:
> ============
> --- nanosleep02.c       2009-11-02 22:57:17.000000000 +0900
> +++ nanosleep02.c.new   2009-12-21 14:15:19.000000000 +0900
> @@ -162,10 +162,10 @@
>
>                /* Wait for child to execute */
>                wait(&status);
> -               if (WEXITSTATUS(status) == 0) {
> +               if (WIFEXITED(status)) {
>                        tst_resm(TPASS, "Functionality of nanosleep() "
>                                 "is correct");
> -               } else if (WEXITSTATUS(status) == 1) {
> +               } else if (!WIFEXITED(status)) {
>                        tst_resm(TFAIL, "child process exited abnormally");
>                }
>        }                       /* End for TEST_LOOPING */
>
> ============
>
> ============
> --- nanosleep03.c       2009-11-02 22:57:17.000000000 +0900
> +++ nanosleep03.c.new   2009-12-21 15:03:52.000000000 +0900
> @@ -143,10 +143,10 @@
>
>                /* Wait for child to execute */
>                wait(&status);
> -               if (WEXITSTATUS(status) == 0) {
> +               if (WIFEXITED(status)) {
>                        tst_resm(TPASS, "nanosleep() fails, interrupted"
>                                 " by signal, error:%d", EINTR);
> -               } else if (WEXITSTATUS(status) == 1) {
> +               } else if (!WIFEXITED(status)) {
>                        tst_resm(TFAIL, "child process exited abnormally");
>                }
>        }                       /* End for TEST_LOOPING */
>
> ============
>
> ============
> --- nanosleep04.c       2009-11-02 22:57:17.000000000 +0900
> +++ nanosleep04.c.new   2009-12-21 15:04:24.000000000 +0900
> @@ -147,10 +147,10 @@
>
>                /* Wait for child to execute */
>                wait(&status);
> -               if (WEXITSTATUS(status) == 0) {
> +               if (WIFEXITED(status)) {
>                        tst_resm(TPASS, "nanosleep() fails, invalid pause "
>                                 "time, error:%d", EINVAL);
> -               } else if (WEXITSTATUS(status) == 1) {
> +               } else if (!WIFEXITED(status)) {
>                        tst_resm(TFAIL, "child process exited abnormally");
>                }
>        }                       /* End for TEST_LOOPING */
> ============

I agree that the test's validation step is written incorrectly, as per
the wait(2) manpage:


       WIFEXITED(status)
              returns true if the child terminated normally, that is, by call-
              ing exit(3) or _exit(2), or by returning from main().

       WEXITSTATUS(status)
              returns the exit status of the  child.   This  consists  of  the
              least  significant  8 bits of the status argument that the child
              specified in a call to exit(3) or _exit(2) or  as  the  argument
              for  a  return  statement  in main().  This macro should only be
              employed if WIFEXITED returned true.

    in particular the precondition for calling WEXITSTATUS, but should
it be WIFEXITED(status) && WEXITSTATUS(status) == 0 => PASS, else
FAIL?

Thanks,
-Garrett



------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

  reply	other threads:[~2009-12-22  5:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-21  7:18 [LTP] "nanosleep{02〜04}" testcase failed Mitani
2009-12-22  2:45 ` [LTP] "nanosleep{02~04}" " Garrett Cooper
2009-12-22  5:17   ` Mitani [this message]
2009-12-22 17:35     ` Garrett Cooper

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='000001ca82c6$09f0ec40$1dd2c4c0$@co.jp' \
    --to=mitani@ryobi.co.jp \
    --cc=ltp-list@lists.sourceforge.net \
    --cc=yanegomi@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox