Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > comp.programming.threads > #1147

Re: Safe accesses of global arrays in signal handlers?

From Rainer Weikusat <rweikusat@mssgmbh.com>
Newsgroups comp.programming.threads, comp.unix.programmer
Subject Re: Safe accesses of global arrays in signal handlers?
Date 2012-10-01 18:04 +0100
Message-ID <87txuep1iz.fsf@sapphire.mobileactivedefense.com> (permalink)
References (4 earlier) <aclh4pFol46U1@mid.individual.net> <pan.2012.09.28.17.26.06.856000@nowhere.com> <aco59lFcohrU1@mid.individual.net> <pan.2012.09.29.19.37.07.356000@nowhere.com> <rggkj9-4fn.ln1@wilbur.25thandClement.com>

Cross-posted to 2 groups.

Show all headers | View raw


William Ahern <william@wilbur.25thandClement.com> writes:
> Nobody <nobody@nowhere.com> wrote:
>> On Sat, 29 Sep 2012 13:44:50 +0200, Markus Elfring wrote:
>
>> >> Yes. write() is async-signal-safe, so one thread can do a blocking
>> >> read() and the signal handler can use write() to wake it.
>> > 
>> > Thanks for your feedback.
>> > 
>> > Do you see any difficulties or software design challenges for proper
>> > handling of the situation that more data is written into the pipe than
>> > the receiving thread can read and process in a timely manner?
>
>> The signal handler only needs to write one byte at a time; the receiving
>> thread can read a pipe-full at a time. If the receiving thread does
>> nothing but notify worker threads or enqueue messages, there shouldn't be
>> a problem.
>
>> But you have a similar issue with the signals themselves. If non-realtime
>> signals are generated faster than they are handled, pending signals aren't
>> guaranteed to be queued, i.e. the handler may only be invoked once for
>> multiple signals.
>
> The problematic issue is when SIGFOO fills the pipe, causing SIGBAR to get
> dropped on the floor. That seems exceedingly unlikely, but I suppose you
> could use one pipe per signal.

Technically, when the program is receiving signals so fast that it
doesn't get around to processing them anymore, that's a livelock and
in this case, something has to be dropped on the floor in order to
restore the ability to make forward progress. Consequently, just
setting the pipe descriptor to non-blocking and ignoring EAGAIN in the
signal handler might be a sensible approach, especially considering
that this is unlikely to happen for typical uses of signals.

Back to comp.programming.threads | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-25 08:01 +0200
  Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-25 12:15 +0100
    Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-27 11:20 +0200
      Re: Safe accesses of global arrays in signal handlers? Rainer Weikusat <rweikusat@mssgmbh.com> - 2012-09-27 13:23 +0100
        Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-28 13:25 +0200
      Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-27 13:35 +0100
        Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-28 13:48 +0200
          Re: Safe accesses of global arrays in signal handlers? Johann Klammer <klammerj@NOSPAM.a1.net> - 2012-09-28 18:34 +0200
            Re: Safe accesses of global arrays in signal handlers? scott@slp53.sl.home (Scott Lurndal) - 2012-09-28 17:54 +0000
          Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-28 18:26 +0100
            Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-29 13:44 +0200
              Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-29 20:37 +0100
                Re: Safe accesses of global arrays in signal handlers? William Ahern <william@wilbur.25thandClement.com> - 2012-09-29 17:31 -0700
                Signal handlers writing into pipes Markus Elfring <Markus.Elfring@web.de> - 2012-09-30 13:21 +0200
                Re: Safe accesses of global arrays in signal handlers? Rainer Weikusat <rweikusat@mssgmbh.com> - 2012-10-01 18:04 +0100
                Signal handlers writing into pipes Markus Elfring <Markus.Elfring@web.de> - 2012-10-03 16:36 +0200
                Re: Signal handlers writing into pipes Rainer Weikusat <rweikusat@mssgmbh.com> - 2012-10-03 17:07 +0100
                Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-30 13:12 +0200
                Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-30 20:46 +0100
        Re: Safe accesses of global arrays in signal handlers? Geoff Clare <geoff@clare.See-My-Signature.invalid> - 2012-09-28 13:39 +0100
        Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-29 13:15 +0200
          Re: Safe accesses of global arrays in signal handlers? William Ahern <william@wilbur.25thandClement.com> - 2012-09-29 17:42 -0700
            Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-30 14:04 +0200
  Re: Safe accesses of global arrays in signal handlers? Rainer Weikusat <rweikusat@mssgmbh.com> - 2012-09-25 13:27 +0100

csiph-web