[PATCH 4/5] nptl: Fix sem_wait and sem_timedwait cancellation
Adhemerval Zanella
adhemerval.zanella@linaro.org
Wed Sep 14 20:51:00 GMT 2016
On 09/09/2016 13:32, Torvald Riegel wrote:
> On Mon, 2016-09-05 at 20:07 +0200, Torvald Riegel wrote:
>> On Mon, 2016-08-22 at 11:27 -0300, Adhemerval Zanella wrote:
>>> This patch fixes both sem_wait and sem_timedwait cancellation point for
>>> uncontended case. In this scenario only atomics are involved and thus
>>> the futex cancellable call is not issue and a pending cancellation signal
>>> is not handled.
>>
>> I have added a comment on the BZ explaining why I think this is NOTABUG.
>
> I've looked at the POSIX rationale again, and it seems I was wrong in my
> interpretation of what the POSIX spec requires. I now think that we
> need to add the pthread_testcancel call or equivalent. The patch looks
> okay, but please also add a comment to the added pthread_testcancel call
> explaining why we need it. Something like this may be useful:
>
> We need to check whether we need to act upon a cancellation request here
> because POSIX specifies that cancellation points "shall occur" in
> sem_wait and sem_timedwait, which also means that they need to check
> this regardless whether they block or not (unlike "may occur"
> functions). See the POSIX Rationale for this requirement: Section
> "Thread Cancellation Overview" in
> http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap02.html
> See http://austingroupbugs.net/view.php?id=1076 for thoughts on why this
> may be a suboptimal design.
>
Thanks for check out this, my initial understanding followed your #4 comment
in bug report. I will add your comment in the patch.
>
> Thanks.
>
More information about the Libc-alpha
mailing list