Samuel Thibault, le dim. 23 août 2026 13:24:11 +0200, a ecrit:
> 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?
> 
> Mmm, but __pthread_timedblock really calls the non-interruptible
> __mach_msg, so the patch is rather an bandaid: the problem is not
> actually _hurd_intr_rpc_mach_msg looping around since it's never called,
> but __mach_msg_trap itself looping around, either inside the kernel, or
> because of signal handling.

Ah, it's actually glibc's __mach_msg in mach/msg.c which does the loop,
ok.

Samuel

Reply via email to