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,6 +97,11 @@ post_acquire_global_lock (struct thread_state *self)
|
||||||
static void
|
static void
|
||||||
acquire_global_lock (struct thread_state *self)
|
acquire_global_lock (struct thread_state *self)
|
||||||
{
|
{
|
||||||
|
/* 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);
|
sys_mutex_lock (&global_lock);
|
||||||
post_acquire_global_lock (self);
|
post_acquire_global_lock (self);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue