public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v2] syscalls/signal06: fix test for regression with earlier version of gcc and kernel
Date: Thu, 9 Feb 2017 17:00:52 +0800	[thread overview]
Message-ID: <589C2FC4.4080502@cn.fujitsu.com> (raw)
In-Reply-To: <1479284063-12968-1-git-send-email-fenggw-fnst@cn.fujitsu.com>

Hi!

Ping, thanks!


Best Regards,
Guangwen Feng

On 11/16/2016 04:14 PM, Guangwen Feng wrote:
> 1. Currently, following code is incorrect on some releases with
>    earlier version of gcc(tested on RHEL5.11GA):
> 
> 	while (D == d && loop < LOOPS) {
> 
>    Because the argument in function test(double d) is used via (%rsp),
>    but here we actually need a xmm register to trigger the fpu bug.
>    So use global value instead to make sure to take use of xmm.
> 
> 2. Although this regression test is designed to trigger SIGSEGV
>    intentionally, on some releases with old kernel(tested on RHEL5.11GA),
>    this will still lead to segmentation fault that terminate the program
>    and break the test even though compiling with -O2.  So slightly adjust
>    the weight of the codes in child thread to depress SIGSEGV trigger's
>    chance while increase LOOPS to ensure reproducible.
> 
> Signed-off-by: Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
> ---
>  testcases/kernel/syscalls/signal/signal06.c | 29 +++++++++++++++++------------
>  1 file changed, 17 insertions(+), 12 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/signal/signal06.c b/testcases/kernel/syscalls/signal/signal06.c
> index 75ef733..1f1b31c 100644
> --- a/testcases/kernel/syscalls/signal/signal06.c
> +++ b/testcases/kernel/syscalls/signal/signal06.c
> @@ -31,8 +31,8 @@
>   * 		Date:   Tue Sep 2 19:57:17 2014 +0200
>   *
>   *      commit 66463db4fc5605d51c7bb81d009d5bf30a783a2c
> - *               Author: Oleg Nesterov <oleg@redhat.com>
> - *               Date:   Tue Sep 2 19:57:13 2014 +0200
> + *              Author: Oleg Nesterov <oleg@redhat.com>
> + *              Date:   Tue Sep 2 19:57:13 2014 +0200
>   *
>   * Reproduce:
>   *	Test-case (needs -O2).
> @@ -55,20 +55,21 @@ int TST_TOTAL = 5;
>  
>  #if __x86_64__
>  
> -#define LOOPS 10000
> +#define LOOPS 30000
> +#define VALUE 123.456
>  
>  volatile double D;
>  volatile int FLAGE;
>  
>  char altstack[4096 * 10] __attribute__((aligned(4096)));
>  
> -void test(double d)
> +void test(void)
>  {
>  	int loop = 0;
>  	int pid = getpid();
>  
> -	D = d;
> -	while (D == d && loop < LOOPS) {
> +	D = VALUE;
> +	while (D == VALUE && loop < LOOPS) {
>  		/* sys_tkill(pid, SIGHUP); asm to avoid save/reload
>  		 * fp regs around c call */
>  		asm ("" : : "a"(__NR_tkill), "D"(pid), "S"(SIGHUP));
> @@ -94,12 +95,16 @@ void sigh(int sig LTP_ATTRIBUTE_UNUSED)
>  
>  void *tfunc(void *arg LTP_ATTRIBUTE_UNUSED)
>  {
> -	for (; ;) {
> -		TEST(mprotect(altstack, sizeof(altstack), PROT_READ));
> -		if (TEST_RETURN == -1)
> -			tst_brkm(TBROK | TTERRNO, NULL, "mprotect failed");
> +	int i;
> +
> +	for (i = -1; ; i *= -1) {
> +		if (i == -1) {
> +			TEST(mprotect(altstack, sizeof(altstack), PROT_READ));
> +			if (TEST_RETURN == -1)
> +				tst_brkm(TBROK | TTERRNO, NULL, "mprotect failed");
> +		}
>  
> -		TEST(mprotect(altstack, sizeof(altstack), PROT_READ|PROT_WRITE));
> +		TEST(mprotect(altstack, sizeof(altstack), PROT_READ | PROT_WRITE));
>  		if (TEST_RETURN == -1)
>  			tst_brkm(TBROK | TTERRNO, NULL, "mprotect failed");
>  
> @@ -148,7 +153,7 @@ int main(int ac, char **av)
>  				tst_brkm(TBROK | TRERRNO, NULL,
>  						"pthread_create failed");
>  
> -			test(123.456);
> +			test();
>  
>  			TEST(pthread_join(pt, NULL));
>  			if (TEST_RETURN)
> 



  reply	other threads:[~2017-02-09  9:00 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-05  6:58 [LTP] [PATCH] syscalls/signal06: fix test for regression with earlier version of gcc and kernel Guangwen Feng
2016-08-08  8:44 ` Li Wang
2016-08-16  3:08   ` Guangwen Feng
2016-09-20  9:59 ` Guangwen Feng
2016-10-05 13:43 ` Cyril Hrubis
2016-10-06 10:31   ` Guangwen Feng
2016-10-06 11:15     ` Cyril Hrubis
2016-10-10  7:05       ` Guangwen Feng
2016-10-10 13:15         ` Cyril Hrubis
2016-10-11  7:17           ` Guangwen Feng
2016-11-16  8:14           ` [LTP] [PATCH v2] " Guangwen Feng
2017-02-09  9:00             ` Guangwen Feng [this message]
2017-02-09 16:19             ` Cyril Hrubis
2017-02-13  3:38               ` Guangwen Feng
2017-02-13  9:12                 ` Cyril Hrubis

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=589C2FC4.4080502@cn.fujitsu.com \
    --to=fenggw-fnst@cn.fujitsu.com \
    --cc=ltp@lists.linux.it \
    /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