From: Masami Hiramatsu <mhiramat@redhat.com>
To: Roland McGrath <roland@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>, lkml <linux-kernel@vger.kernel.org>,
systemtap <systemtap@sources.redhat.com>,
DLE <dle-develop@lists.sourceforge.net>,
Oleg Nesterov <oleg@redhat.com>
Subject: Re: [PATCH -tip 3/3] Add get_signal tracepoint
Date: Mon, 16 Nov 2009 17:39:49 -0500 [thread overview]
Message-ID: <4B01D4B5.1050909@redhat.com> (raw)
In-Reply-To: <20091116220957.8E2142F@magilla.sf.frob.com>
Roland McGrath wrote:
>>> - signal loss events (queue overflow)
>>
>> Perhaps, this event is only for rt-signals, since
>> legacy signals just overwritten if it was sent.
>
> Not exactly. Nothing is ever "overwritten". If a non-RT signal is already
> pending, then you just leave the existing queue elements alone--i.e. the
> first one isn't overwritten, rather the second one is dropped. But this is
> not really the point.
>
> The "queue overflow" happens in two ways. For RT signals it really is a
> "signal loss" event--but that's also reported to the sender as -EAGAIN. So
> a signal-generation tracepoint that reports the return value would already
> cover that in a way.
>
> For non-RT signals, a new signal is never lost. But __sigqueue_alloc() can
> still fail. In this case, you get no queue element and thus no siginfo_t
> stored, so you can lose some information about the signal. You don't lose
> the signal itself, but will later dequeue it with an all-zeros siginfo_t.
> While calling this a "signal loss" is inaccurate, it is indeed a silent
> failure of sorts (unlike the RT signal case, which the userland caller
> knows about from the return value).
Hmm, actually, trace_signal_send() doesn't record the return value.
So, what about trace_signal_overflow() for RT-signals and
trace_signal_loss_info() for non-RT?
e.g.
@@ -918,12 +918,15 @@ static int __send_signal(int sig, struct siginfo *info, struct task_struct *t,
break;
}
} else if (!is_si_special(info)) {
- if (sig >= SIGRTMIN && info->si_code != SI_USER)
+ if (sig >= SIGRTMIN && info->si_code != SI_USER) {
/*
* Queue overflow, abort. We may abort if the signal was rt
* and sent by user using something other than kill().
*/
+ trace_signal_overflow(sig, t);
return -EAGAIN;
+ }
+ trace_signal_loss_info(sig, info);
}
Thank you,
--
Masami Hiramatsu
Software Engineer
Hitachi Computer Products (America), Inc.
Software Solutions Division
e-mail: mhiramat@redhat.com
next prev parent reply other threads:[~2009-11-16 22:42 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-13 22:52 [PATCH -tip 1/3] Pass mm->flags to binfmt core_dump for bitflag consistency Masami Hiramatsu
2009-11-13 22:52 ` [PATCH -tip 2/3] Add coredump tracepoint Masami Hiramatsu
2009-11-13 23:39 ` Roland McGrath
2009-11-14 0:00 ` Masami Hiramatsu
2009-11-14 0:02 ` Ingo Molnar
2009-11-14 0:06 ` Roland McGrath
2009-11-14 0:14 ` Ingo Molnar
2009-11-14 1:49 ` Roland McGrath
2009-11-14 0:25 ` Masami Hiramatsu
2009-11-13 22:52 ` [PATCH -tip 3/3] Add get_signal tracepoint Masami Hiramatsu
2009-11-13 23:53 ` Roland McGrath
2009-11-14 0:10 ` Ingo Molnar
2009-11-16 21:51 ` Masami Hiramatsu
2009-11-16 22:09 ` Roland McGrath
2009-11-16 22:39 ` Masami Hiramatsu [this message]
2009-11-16 23:00 ` Roland McGrath
2009-11-16 23:45 ` Masami Hiramatsu
2009-11-17 6:01 ` Ingo Molnar
2009-11-17 15:26 ` Masami Hiramatsu
2009-11-14 0:29 ` Masami Hiramatsu
2009-11-13 23:09 ` [PATCH -tip 1/3] Pass mm->flags to binfmt core_dump for bitflag consistency Andrew Morton
2009-11-13 23:24 ` Ingo Molnar
2009-11-13 23:44 ` Masami Hiramatsu
2009-11-13 23:16 ` Roland McGrath
2009-11-13 23:23 ` Ingo Molnar
2009-11-13 23:29 ` Roland McGrath
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=4B01D4B5.1050909@redhat.com \
--to=mhiramat@redhat.com \
--cc=dle-develop@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=oleg@redhat.com \
--cc=roland@redhat.com \
--cc=systemtap@sources.redhat.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 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.