linux-man.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Carlos O'Donell" <carlos@redhat.com>
To: Alexandre Oliva <aoliva@redhat.com>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>,
	Rich Felker <dalias@libc.org>,
	Peng Haitao <penght@cn.fujitsu.com>,
	"linux-man@vger.kernel.org" <linux-man@vger.kernel.org>,
	GNU C Library <libc-alpha@sourceware.org>
Subject: Re: Adding reentrancy information to safety notes?
Date: Mon, 05 Jan 2015 10:26:47 -0500	[thread overview]
Message-ID: <54AAAD37.1080207@redhat.com> (raw)
In-Reply-To: <or8uhndlfm.fsf@livre.home>

On 01/01/2015 02:11 AM, Alexandre Oliva wrote:
> On Dec 31, 2014, "Carlos O'Donell" <carlos@redhat.com> wrote:
> 
>> A function is synchronously reentrant if a thread may safely
>> call the function before a previous call to the same function
>> by the same thread completes, but need not be safe if the
>> second or subsequent calls are made while handling an
>> asynchronous signal or by another thread.
> 
> I'd qualify the asynchronous signal to state that it need not be safe
> only if the signal interrupted asynchronously the execution of the
> previous call, otherwise it would also allow a(n indirectly) recursive
> function, called from the signal handler for the first time, to be
> unsafe when called recursively.

That is true. I considered this in the context of synchronous signal
delivery but couldn't come up with a real way to assure myself that
the signal didn't interrupt foo.

> I.e., stack traces such as:
> 
>   foo
>   bar
>   foo
>   [...]
>   <signal>
>   [...no foo...]
>   main
> 
> should be just as safe as:
> 
>   foo
>   bar
>   foo
>   [...no foo...]
>   main
> 
> but it's ok if foo is unsafe here:
> 
>   foo
>   bar
>   [...]
>   <signal>
>   [...]
>   foo
>   [...]

I agree that this can happen. The question I have is: Is it worth
allowing this if you can't prove that foo wasn't being executed?

I guess you can prove it by assuring that you're only calling AS-safe
functions, of which foo isn't one of them, and if it is, then it's
safe to call anyway.

How would you rewrite the original definition to include this case?

Cheers,
Carlos.

  reply	other threads:[~2015-01-05 15:26 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-30 15:45 Adding reentrancy information to safety notes? Carlos O'Donell
     [not found] ` <54A2C8A6.9050100-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-30 19:53   ` Michael Kerrisk (man-pages)
2014-12-30 20:08     ` Carlos O'Donell
     [not found]       ` <54A30624.7070207-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-30 20:35         ` Michael Kerrisk (man-pages)
2014-12-30 22:55   ` Alexandre Oliva
     [not found]     ` <ork318eoj4.fsf-o1YuAO9g/txBDLzU/O5InQ@public.gmane.org>
2014-12-30 23:05       ` Rich Felker
     [not found]         ` <20141230230529.GT4574-C3MtFaGISjmo6RMmaWD+6Sb1p8zYI1N1@public.gmane.org>
2014-12-31  1:43           ` Alexandre Oliva
2014-12-31  4:12             ` Carlos O'Donell
2014-12-31  9:38               ` Alexandre Oliva
     [not found]                 ` <orppb0dur7.fsf-o1YuAO9g/txBDLzU/O5InQ@public.gmane.org>
2014-12-31 16:07                   ` Carlos O'Donell
     [not found]                     ` <54A41F36.5010800-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-01-01  7:11                       ` Alexandre Oliva
2015-01-05 15:26                         ` Carlos O'Donell [this message]
2015-01-05 23:21                           ` Alexandre Oliva
2015-01-07  9:52                       ` Michael Kerrisk (man-pages)
     [not found]               ` <54A377B8.60802-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-31  9:31                 ` Alexandre Oliva
     [not found]                   ` <ortx0cdv3c.fsf-o1YuAO9g/txBDLzU/O5InQ@public.gmane.org>
2014-12-31 15:26                     ` Carlos O'Donell
     [not found]                       ` <54A41595.4010007-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-01-01  7:05                         ` Alexandre Oliva
2015-01-05 14:25                           ` Carlos O'Donell
2015-01-01  0:19                 ` Rich Felker
     [not found]                   ` <20150101001905.GU4574-C3MtFaGISjmo6RMmaWD+6Sb1p8zYI1N1@public.gmane.org>
2015-01-05 15:05                     ` Carlos O'Donell

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=54AAAD37.1080207@redhat.com \
    --to=carlos@redhat.com \
    --cc=aoliva@redhat.com \
    --cc=dalias@libc.org \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-man@vger.kernel.org \
    --cc=mtk.manpages@gmail.com \
    --cc=penght@cn.fujitsu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).