From: "Nikita V. Youshchenko" <nyoushchenko@mvista.com>
To: linux-kernel@vger.kernel.org
Cc: Alexander Kaliadin <akaliadin@mvista.com>, oishi.y@sys.yzk.co.jp
Subject: Likely race between sys_rt_sigtimedwait() and complete_signal()
Date: Thu, 10 Feb 2011 10:32:16 +0300 [thread overview]
Message-ID: <201102101032.16401@blacky.localdomain> (raw)
Hello linux-kernel.
Within project we are working on, we are facing a "rare" situation when
setitimer() / sigwait() - based periodic task execution hangs. "Rare"
means once per several hours for 1000 Hz timer.
For hanged thread, cat /proc/pid/status shows
...
State: S (sleeping)
...
SigPnd: 0000000000000000
ShdPnd: 0000000000002000
SigBlk: 0000000000000000
...
and SysRq - T shows
[<c015b1b0>] (__schedule+0x2fc/0x37c) from [<c015b7b8>]
(schedule+0x1c/0x30)
[<c015b7b8>] (schedule+0x1c/0x30) from [<c015b8c4>]
(schedule_timeout+0x18/0x1dc)
[<c015b8c4>] (schedule_timeout+0x18/0x1dc) from [<c004a084>]
(sys_rt_sigtimedwait+0x1b4/0x288)
[<c004a084>] (sys_rt_sigtimedwait+0x1b4/0x288) from [<c001cf00>]
(ret_fast_syscall+0x0/0x28)
All other threads have SIGALRM blocked as they should, looking
through /proc/X/status proves this.
So for some reason, SIGALRM was successfully delivered by timer, bit was
set in ShdPnd [I guess at the bottom of __send_signal()], but that still
resulted somehow in thread going to schedule() and not waking.
I guess this is some sort of race between sys_rt_sigtimedwait() and
complete_signal().
This is on embedded system running vendor 2.6.31-based kernel, moving
forward is unfortunately impossible because of hardware support issues.
However I've looked through
git log -p HEAD..linus/master -- kernel/signal.c
and did not notice anything that could be related.
Unfortunately we don't currently have resources for futher analysis -
especially with simple workarounds existing, such as switch to
timerfd-based periodic execution (which looks working without hangs).
However I guess the race we faced still exists in the current upstream
kernel, so maybe somebody on this mailing list could be interested into
looking at this?
Nikita
next reply other threads:[~2011-02-10 7:38 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-10 7:32 Nikita V. Youshchenko [this message]
[not found] <20110407141215.46d0b930.akpm@linux-foundation.org>
2011-04-09 13:45 ` Oleg Nesterov
2011-04-09 19:44 ` Nikita V. Youshchenko
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=201102101032.16401@blacky.localdomain \
--to=nyoushchenko@mvista.com \
--cc=akaliadin@mvista.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oishi.y@sys.yzk.co.jp \
/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
all inboxes | Powered by JetHome®