On 23/8/26 9:24 pm, Samuel Thibault wrote:
> Samuel Thibault, le dim. 23 août 2026 11:16:59 +0200, a ecrit:
>> Samuel Thibault, le dim. 23 août 2026 11:11:52 +0200, a ecrit:
>>> Samuel Thibault, le dim. 23 août 2026 10:24:52 +0200, a ecrit:
>>>> One thing that is a bug, however, is the program below, which stays
>>>> blocked because the mach_msg calling loop keeps using the same timeout.
>>>>
>>>> We probably need a version that takes a clock_id and an absolute time,
>>>> and does the clock_gettime call itself on each mach_msg calling loop.
>>> Or probably simpler: make __pthread_timedblock always pass
>>> MACH_RCV_INTERRUPT to __mach_msg, but loop around if it returns EINTR
>>> and MACH_RCV_INTERRUPT was not in MSG_OPTIONS.
>> Could you try this?

Currently:

demo@zamhurd64:~$ gcc ptcond.c -o ptcond -lpthread
demo@zamhurd64:~$ ./ptcond
waiting
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
handle
^C
demo@zamhurd64:~$

With your patch:

demo@zamhurd64:~$ ./ptcond
waiting
handle
handle
handle
handle
waited
demo@zamhurd64:~$

Damien



Reply via email to