From: Naohiro Ooiwa <nooiwa@miraclelinux.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: roland@redhat.com, akpm@linux-foundation.org, oleg@redhat.com,
LKML <linux-kernel@vger.kernel.org>,
h-shimamoto@ct.jp.nec.com, Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [PATCH] show message when exceeded rlimit of pending signals
Date: Tue, 27 Oct 2009 01:39:14 +0900 [thread overview]
Message-ID: <4AE5D0B2.2050706@miraclelinux.com> (raw)
In-Reply-To: <20091026113800.GA9503@elte.hu>
Hi Ingo,
Now that you mention it, I think so, too.
I update my patch.
How is the following patch.
Could you please review it.
Thanks you.
Naohiro Ooiwa
Signed-off-by: Naohiro Ooiwa <nooiwa@miraclelinux.com>
---
Documentation/kernel-parameters.txt | 9 ++++++++-
kernel/signal.c | 16 +++++++++++++---
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/Documentation/kernel-parameters.txt
b/Documentation/kernel-parameters.txt
index 9107b38..01c2723 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -2032,8 +2032,15 @@ and is between 256 and 4096 characters. It is
defined in the file
print-fatal-signals=
[KNL] debug: print fatal signals
+ If you would like to know what the cause of a coredump
+ by signal number, if your working system may have
+ too many POSIX.1 timers, and when during the system
+ test,you may as well to enable this parameter.
print-fatal-signals=1: print segfault info to
- the kernel console.
+ the kernel console, and print caution that reached the
+ limit of pending signals to the kernel console.
+ When printed the caution messages, you can try
+ "ulimit -i unlimited".
default: off.
printk.time= Show timing data prefixed to each printk message line
diff --git a/kernel/signal.c b/kernel/signal.c
index 6705320..137112e 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -188,6 +188,14 @@ int next_signal(struct sigpending *pending,
sigset_t *mask)
return sig;
}
+int print_fatal_signals;
+
+static void show_reach_rlimit_sigpending(void)
+{
+ if (printk_ratelimit())
+ printk(KERN_WARNING "%s/%d: reached the limit of pending signals.\n",
current->comm, current->pid);
+}
+
/*
* allocate a new signal queue record
* - this may be called without locks if and only if t == current,
otherwise an
@@ -209,8 +217,12 @@ static struct sigqueue *__sigqueue_alloc(struct
task_struct *t, gfp_t flags,
atomic_inc(&user->sigpending);
if (override_rlimit ||
atomic_read(&user->sigpending) <=
- t->signal->rlim[RLIMIT_SIGPENDING].rlim_cur)
+ t->signal->rlim[RLIMIT_SIGPENDING].rlim_cur) {
q = kmem_cache_alloc(sigqueue_cachep, flags);
+ } else {
+ if (print_fatal_signals)
+ show_reach_rlimit_sigpending();
+ }
if (unlikely(q == NULL)) {
atomic_dec(&user->sigpending);
free_uid(user);
@@ -925,8 +937,6 @@ static int send_signal(int sig, struct siginfo
*info, struct task_struct *t,
return __send_signal(sig, info, t, group, from_ancestor_ns);
}
-int print_fatal_signals;
-
static void print_fatal_signal(struct pt_regs *regs, int signr)
{
printk("%s/%d: potentially unexpected fatal signal %d.\n",
-- 1.5.4.1
Ingo Molnar wrote:
> * nooiwa <nooiwa@miraclelinux.com> wrote:
>
>> +++ b/kernel/sysctl.c
>> @@ -67,6 +67,7 @@ static int deprecated_sysctl_warning(struct __sysctl_args *args);
>> /* External variables not in a header file. */
>> extern int C_A_D;
>> extern int print_fatal_signals;
>> +extern int print_reach_rlimit_sigpending;
>
> Ooiwa-san, Roland, Andrew - what do you think about just making this
> part of the existing print_fatal_signals flag, instead of adding a new
> one?
>
> Signal queue overflows are a 'fatal', signal-related condition as well -
> we lose a signal in essence. The patch would be smaller as well.
>
> Ingo
next prev parent reply other threads:[~2009-10-26 16:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-23 10:07 [PATCH] show message when exceeded rlimit of pending signals Naohiro Ooiwa
2009-10-23 11:46 ` Ingo Molnar
2009-10-24 7:02 ` Naohiro Ooiwa
2009-10-24 8:56 ` Naohiro Ooiwa
2009-10-24 8:58 ` Ingo Molnar
2009-10-26 10:17 ` nooiwa
2009-10-26 11:38 ` Ingo Molnar
2009-10-26 16:37 ` Roland McGrath
2009-10-26 16:39 ` Naohiro Ooiwa [this message]
2009-10-26 20:28 ` Ingo Molnar
2009-10-27 2:58 ` Naohiro Ooiwa
2009-10-27 4:36 ` Hiroshi Shimamoto
2009-10-27 8:27 ` nooiwa
2009-10-23 21:07 ` Roland McGrath
2009-10-24 8:27 ` Naohiro Ooiwa
-- strict thread matches above, loose matches on Subject: below --
2009-10-30 11:36 Naohiro Ooiwa
2009-10-30 21:33 ` Andrew Morton
2009-10-30 21:45 ` Joe Perches
2009-10-31 7:58 ` Naohiro Ooiwa
2009-10-31 8:50 ` Naohiro Ooiwa
2009-10-31 8:57 ` Andrew Morton
2009-10-31 11:05 ` Naohiro Ooiwa
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=4AE5D0B2.2050706@miraclelinux.com \
--to=nooiwa@miraclelinux.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=h-shimamoto@ct.jp.nec.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=oleg@redhat.com \
--cc=roland@redhat.com \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.