From: Cyril Hrubis <chrubis@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] rt_sigtimedwait01 failed in armv7l
Date: Tue, 13 Dec 2016 11:43:53 +0100 [thread overview]
Message-ID: <20161213104352.GA750@rei.lan> (raw)
In-Reply-To: <584FBAE7.2010100@huawei.com>
Hi!
> Hi, These is a fail about rt_sigtimedwait01(armv7l GNU/Linux and linux 3.10):
> root@arma9el:/tmp# ./rt_sigtimedwait01
> rt_sigtimedwait01 0 TINFO : 0x9fd0, 10
> rt_sigtimedwait01 1 TPASS : Test passed
> rt_sigtimedwait01 0 TINFO : 0x9fd0, 10
> rt_sigtimedwait01 2 TPASS : Test passed
> ...
> rt_sigtimedwait01 0 TINFO : 0x9fd0, 12
> rt_sigtimedwait01 11 TPASS : Test passed
> rt_sigtimedwait01 0 TINFO : 0x9fd0, 15
> rt_sigtimedwait01 12 TPASS : Test passed
> rt_sigtimedwait01 12 TPASS : sigwaitinfo restored the original mask
> rt_sigtimedwait01 0 TINFO : 0x9fd0, -1
>
> rt_sigtimedwait01 13 TFAIL : /home/cuibixuan/ltp/testcases/kernel/syscalls/rt_sigtimedwait/../sigwaitinfo/sigwaitinfo01.c:56:
> test_masked_matching_rt (/home/cuibixuan/ltp/testcases/kernel/syscalls/rt_sigtimedwait/../sigwaitinfo/sigwaitinfo01.c: 274): Unexpected return value; expected 35, got 36
> rt_sigtimedwait01 13 TFAIL : /home/cuibixuan/ltp/testcases/kernel/syscalls/rt_sigtimedwait/../sigwaitinfo/sigwaitinfo01.c:56:
> test_masked_matching_rt (/home/cuibixuan/ltp/testcases/kernel/syscalls/rt_sigtimedwait/../sigwaitinfo/sigwaitinfo01.c: 282): Unexpected return value; expected 36, got 35
> rt_sigtimedwait01 13 TPASS : sigwaitinfo restored the original mask
>
>
> I add 'sleep(1)' into test_masked_matching_rt() of ltp/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c:268
>
> void test_masked_matching_rt(swi_func sigwaitinfo, int signo)
> ...
> /* Run a child that will wake us up */
> child[0] = create_sig_proc(0, signo, 1);
> + sleep(1);
> child[1] = create_sig_proc(0, signo + 1, 1);
>
> Then the case pass:
> rt_sigtimedwait01 13 TPASS : Test passed
> rt_sigtimedwait01 13 TPASS : Test passed
> rt_sigtimedwait01 13 TPASS : sigwaitinfo restored the original mask
>
> Or run it by 'chrt 10 ./rt_sigtimedwait01' then pass.
>
> Why? Can someone give me a hand.
I guess that the problem here is that the order in which the test
children and parent are executed is undefined.
The signals should be delivered starting from lowest numbered but that
applies only when both signals are pending at the point we call
sigwaitinfo(). If, by a chance, the first child haven't had chance to
finish until we get to the sigwaitinfo() call we will get the signo+1
signal first, since that is the only one pending at that point.
So the fix here would be making sure that both children are finished
before we call the sigwaitinfo(). Quite possibly doing waitpid() for
both of them will suffice.
--
Cyril Hrubis
chrubis@suse.cz
next prev parent reply other threads:[~2016-12-13 10:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-13 9:09 [LTP] rt_sigtimedwait01 failed in armv7l Cui Bixuan
2016-12-13 10:43 ` Cyril Hrubis [this message]
2016-12-15 2:37 ` Cui Bixuan
2016-12-28 12:14 ` [LTP] [PATCH] rt_sigtimedwait01: fix probability of failure Cui Bixuan
2017-01-16 13:33 ` 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=20161213104352.GA750@rei.lan \
--to=chrubis@suse.cz \
--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