Re: RT signal queues

Don Howard (dhoward@pobox.com)
Wed, 24 Nov 1999 00:11:31 +0000 (PDT)


On Tue, 23 Nov 1999, Dan Kegel wrote:

> Don Howard <dhoward@pobox.com> wrote:
> > Is there a way to flush the system rt signal queue?
>
> Don't know what you mean by 'system',

In linux/kernel/signal.c you will find definitions of

signal_queue_cachep; /* The 'system' rt signal queue - I think. */

nr_queued_signals; /* The current rt signal queue depth.
aka: /proc/sys/kernel/rtsig-nr */

max_queued_signals; /* The max rt signal queue depth.
aka: /proc/sys/kernel/rtsig-max */

While attempting to debug my process, I've found myself
filling the rt signal queue (nr_queued_signal==max_queued_signals).

I would expect this problem to correct itself when the
offending process terminates (I got the impression that
flush_signals() was called at process exit time). This
evidently does not happen or more likely, it doesn't happen
if the process crashes.

> but if you momentarily set the signal handler to SIG_IGN, that should
> flush the queue. See http://x36.deja.com/getdoc.xp?AN=526480649
>
> This is mentioned in my c10k page - maybe you missed it,
> or I'm misunderstanding your question.
> - Dan

It looks like do_sigaction() does the same traversal of the rt
queue that flush_signals() does, so you are right. This
doesn't help me in the case of a process that crashes with signals
pending though.

>
> Don Howard <dhoward@pobox.com> wrote:
> > > See http://www.kegel.com/c10k.html#sigio for a few notes.
> >
> > This is an excellent reference (I read it several times before
> > starting this project). Thanks for putting it up.
>
>

-- 
-Don
dhoward@pobox.com

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/