public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: liubo <liubo2009@cn.fujitsu.com>
To: ltp-list@lists.sourceforge.net, maknayak@in.ibm.com
Subject: Re: [LTP] [PATCH] syscalls: fix some failure on arch X86_64
Date: Wed, 11 Nov 2009 09:28:31 +0800	[thread overview]
Message-ID: <4AFA133F.3020808@cn.fujitsu.com> (raw)
In-Reply-To: <4AF93496.3030408@cn.fujitsu.com>

Hi,
On 11/10/2009 05:38 PM, liubo wrote:
> 1) rt_sigaction
>     "sigaction" has the structure:
>  
>  struct sigaction {
>          __sighandler_t sa_handler;
>          unsigned long sa_flags;
>   #ifdef SA_RESTORER
>           __sigrestore_t sa_restorer;
>   #endif
>           sigset_t sa_mask;               /* mask last for extensibility */
>  };
>
>     However, on arch x86_64, if we directly get to call rt_sigaction,
> the argument "sa_restorer" will not be fulfilled, and this will lead
>  to segment fault.
>     on arch x86_64, if sa_restorer is not set, kernel will lead to segment fault. 
> In other arch, if sa_restorer is not set, kernel can do the correct work.
>     To avoid this segment fault, we use glibc function
> "int sigaction(...);" instead, which can fulfill the argument "sa_restorer".
>
> 2) rt_sigprocmask
>     This failure contains two aspects,
> the first is the segment fault as described in 1),
> the second is that testcase uses a unknown signal 33 for test,
> and this will lead sigaction cannot bind signal 33 to the action.
>
>     So, we attempt to use a known signal instead, such as 34.
>
>   

  I am sure signal 32 and 33 cannot be used in rt_sigprocmask test
  on arch x86_64, but I'm not sure which signal else should be used
  here, Is there anyone can provide suggestions?

> This patch fixed these failures.
>
> Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com>
>
> ---
>  .../kernel/syscalls/rt_sigaction/rt_sigaction01.c  |    4 ++++
>  .../syscalls/rt_sigprocmask/rt_sigprocmask01.c     |   12 ++++++++----
>  .../syscalls/rt_sigsuspend/rt_sigsuspend01.c       |    4 ++++
>  3 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c
> index 27af970..1522ac4 100644
> --- a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c
> +++ b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c
> @@ -154,7 +154,11 @@ set_handler(int sig, int sig_to_mask, int mask_flags)
>                  sa.sa_flags = mask_flags;
>                  sigemptyset(&sa.sa_mask);
>                  sigaddset(&sa.sa_mask, sig_to_mask);
> +		#ifndef __x86_64__
>                  TEST(syscall(__NR_rt_sigaction,sig, &sa, &oldaction,SIGSETSIZE));
> +		#else
> +		TEST(sigaction(sig, &sa, &oldaction));
> +		#endif
>          if (TEST_RETURN == 0) {
>                  return 0;
>          } else {
> diff --git a/testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c b/testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c
> index 6398a28..31258e9 100644
> --- a/testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c
> +++ b/testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c
> @@ -154,7 +154,7 @@ int main(int ac, char **av) {
>                          	cleanup();
>  				tst_exit();
>  			}
> -			TEST(sigaddset(&set, 33));
> +			TEST(sigaddset(&set, 34));
>  			if(TEST_RETURN == -1){
>  				tst_resm(TFAIL,"Call to sigaddset() Failed, errno=%d : %s",TEST_ERRNO, strerror(TEST_ERRNO));
>                          	cleanup();
> @@ -163,7 +163,11 @@ int main(int ac, char **av) {
>  			
>  			/* call rt_sigaction() */
>  			act.sa_handler = sig_handler;
> -                        TEST(syscall(__NR_rt_sigaction, 33, &act, &oact, 8));
> +			#ifndef __x86_64__
> +                        TEST(syscall(__NR_rt_sigaction, 34, &act, &oact, 8));
> +			#else
> +			TEST(sigaction(34, &act, &oact));
> +			#endif
>  			if(TEST_RETURN != 0){
>  				tst_resm(TFAIL,"Call to rt_sigaction() Failed, errno=%d : %s",TEST_ERRNO, strerror(TEST_ERRNO));
>                          	cleanup();
> @@ -178,7 +182,7 @@ int main(int ac, char **av) {
>  			}
>  			
>  			else {
> -				TEST(kill(getpid(), 33));
> +				TEST(kill(getpid(), 34));
>  				if(TEST_RETURN != 0){
>  					tst_resm(TFAIL,"Call to kill() Failed, errno=%d : %s",TEST_ERRNO, strerror(TEST_ERRNO));
>                          		cleanup();
> @@ -198,7 +202,7 @@ int main(int ac, char **av) {
>                          			cleanup();
>  						tst_exit();
>  					}
> -					TEST(sigismember(&oset, 33));
> +					TEST(sigismember(&oset, 34));
>  					if(TEST_RETURN == 0 ){
>  						tst_resm(TFAIL,"call sigismember() Failed, errno=%d : %s",TEST_ERRNO, strerror(TEST_ERRNO));
>                          			cleanup();
> diff --git a/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c b/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
> index 416a7c9..6132622 100644
> --- a/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
> +++ b/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
> @@ -142,7 +142,11 @@ int main(int ac, char **av) {
>  			struct sigaction act, oact;
>  		        act.sa_handler = sig_handler;
>  			
> +			#ifndef __x86_64__
>  			TEST(syscall(__NR_rt_sigaction, SIGALRM, &act, &oact, 8));
> +			#else
> +			TEST(sigaction(SIGALRM, &act, &oact));
> +			#endif
>  			if(TEST_RETURN == -1){
>  		        	tst_resm(TFAIL,"rt_sigaction() Failed, errno=%d : %s",TEST_ERRNO, strerror(TEST_ERRNO));
>  				cleanup();
>   


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

  reply	other threads:[~2009-11-11  1:28 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-10  9:38 [LTP] [PATCH] syscalls: fix some failure on arch X86_64 liubo
2009-11-11  1:28 ` liubo [this message]
2009-11-11  4:14   ` Garrett Cooper
2009-11-11  4:30     ` Wei Yongjun
2009-11-11  5:22     ` liubo
2009-11-11  4:33 ` Mike Frysinger
2009-11-11  5:03   ` Wei Yongjun
2009-11-16  8:13     ` Subrata Modak
2009-11-16  8:53       ` liubo
2009-11-26 11:11         ` Garrett Cooper
2009-11-27  5:33           ` liubo
2009-11-27  6:49             ` Garrett Cooper
2009-11-27  8:50               ` Garrett Cooper
2009-11-27 10:07                 ` liubo
2009-11-27 22:18                   ` Garrett Cooper
2009-11-29  1:22                     ` Wei Yongjun
2009-12-01  0:00                       ` Garrett Cooper
2009-12-09  7:29                         ` liubo
  -- strict thread matches above, loose matches on Subject: below --
2009-12-09  7:34 liubo
2009-12-09 12:14 ` Subrata Modak
2009-12-18 16:03 ` Subrata Modak
2009-12-22  2:51   ` Garrett Cooper
2009-12-22 13:12     ` liubo
2010-02-22  5:21 liubo
2010-02-22  7:56 ` Garrett Cooper
2010-02-22  9:08   ` liubo
2010-02-22 18:05     ` Garrett Cooper
2010-02-23  0:59       ` liubo
2010-02-25  7:26         ` liubo
2010-02-25 10:00           ` Garrett Cooper
2010-02-26  0:35             ` liubo
2010-02-27  4:12               ` Garrett Cooper
2010-02-22  9:20 liubo
2010-02-22 14:45 ` Rishikesh K Rajak

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=4AFA133F.3020808@cn.fujitsu.com \
    --to=liubo2009@cn.fujitsu.com \
    --cc=ltp-list@lists.sourceforge.net \
    --cc=maknayak@in.ibm.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