Avoid a hang after C-g while sit-for on a Unix TTY
* src/thread.c (acquire_global_lock): Don't try to take the global lock if the same thread is already holding it. (Bug#29347)
This commit is contained in:
parent
d7fc719ff1
commit
f300852037
1 changed files with 6 additions and 1 deletions
|
@ -97,7 +97,12 @@ post_acquire_global_lock (struct thread_state *self)
|
|||
static void
|
||||
acquire_global_lock (struct thread_state *self)
|
||||
{
|
||||
sys_mutex_lock (&global_lock);
|
||||
/* If some Lisp was interrupted by C-g while inside pselect, the
|
||||
signal handler could have called maybe_reacquire_global_lock, in
|
||||
which case we are already holding the lock and shouldn't try
|
||||
taking it again, or else we will hang forever. */
|
||||
if (!(self && self->not_holding_lock))
|
||||
sys_mutex_lock (&global_lock);
|
||||
post_acquire_global_lock (self);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue