GNU bug report logs - #79228
30.1.90; native--compile-async sentinel can error if threads are running

Previous Next

Package: emacs;

Reported by: Spencer Baugh <sbaugh <at> janestreet.com>

Date: Tue, 12 Aug 2025 21:57:01 UTC

Severity: normal

Found in version 30.1.90

Done: Eli Zaretskii <eliz <at> gnu.org>

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Spencer Baugh <sbaugh <at> janestreet.com>
Cc: dmitry <at> gutov.dev, acorallo <at> gnu.org, johnw <at> gnu.org, 79228 <at> debbugs.gnu.org
Subject: bug#79228: 30.1.90; native--compile-async sentinel can error if threads are running
Date: Tue, 02 Sep 2025 14:14:15 +0300
> From: Spencer Baugh <sbaugh <at> janestreet.com>
> Cc: acorallo <at> gnu.org,  johnw <at> gnu.org,  79228 <at> debbugs.gnu.org, Dmitry Gutov
>   <dmitry <at> gutov.dev>
> Date: Mon, 01 Sep 2025 15:10:59 -0400
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> From: Spencer Baugh <sbaugh <at> janestreet.com>
> >> Cc: acorallo <at> gnu.org,  johnw <at> gnu.org,  79228 <at> debbugs.gnu.org
> >> Date: Mon, 01 Sep 2025 12:03:21 -0400
> >> 
> >> Eli Zaretskii <eliz <at> gnu.org> writes:
> >> 
> >> >> 1. emacs -Q
> >> >> 2. Run some command which starts a thread
> >> >> 3. Run some command which starts native compilation
> >> >> 
> >> >> Native compilation is done via pending_funcalls.  pending_funcalls can
> >> >> be run in the non-main thread started by 2.
> >> >
> >> > How?
> >> 
> >> Because pending_funcalls is run by timer_check_2, which is run by
> >> timer_check, which is run by wait_reading_process_output, which can be
> >> run by non-main threads.
> >
> > So maybe we should run timers only in the main thread?
> 
> That would break, for example, with-timeout.

So?  I'm not at all surprised that timers and threads, two very
different ways of having the same pseudo-parallel execution in Emacs,
do not live together in peace.

> Alternatively, if we stopped locking processes to threads, this problem
> would also be fixed.

That's too radical, and has too many downsides, as already discussed.
And it's unjustified, since if worse comes to worst, we can simply
unlock the process that performs async compilation.  No need to reach
far-fetched conclusions about processes in general because of this
specific case.




This bug report was last modified 4 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.