Subject: bug#55628: debug-timer-check fails on macOS 11.6.6

From: Mattias Engdegård <[email-masked]>
Date: Wed, 25 May 2022 15:05:32 +0200

25 maj 2022 kl. 14.20 skrev Lars Ingebrigtsen <[email-masked]>:
> 
> Mattias Engdegård <[email-masked]> writes:
> 
>> Built with enable-checking, (debug-timer-check) returns nil.
>> It turns out that debug_timer_callback is never actually called, but I
>> haven't dug further than that.
>> 
>> This is on macOS 11.6.6 and HAVE_TIMERFD is not defined. Does this
>> code path work on other systems?
> 
> I tried this on Debian/bookworm (with nativecomp, but that probably
> doesn't make a difference), and I got nil there, too.

Thanks for checking. Apparently pending_signals is never set; handle_alarm_signal is never called.
More digging shows that set_alarm always sets the interval timer to at least 1 ms in the future even if the timer has expired.

The attached patch makes set_alarm signal SIGALRM immediately if the timer is due. We could call the signal handler directly but this way it should work correctly if the signal is masked at the moment. What do you think?