emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 4fbda46: Prevent crashes in xg_select due to concur


From: Eli Zaretskii
Subject: [Emacs-diffs] master 4fbda46: Prevent crashes in xg_select due to concurrency
Date: Thu, 15 Dec 2016 16:20:45 +0000 (UTC)

branch: master
commit 4fbda463dca50f630c31a2602bd34849f4b51e51
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Prevent crashes in xg_select due to concurrency
    
    * src/xgselect.c (xg_select): Don't call Glib functions that use
    'context' if we failed to acquire it.  This means some other
    thread owns the context, in which case both using the context and
    calling block_input/unblock_input will step on that thread's toes
    and eventually lead to crashes.  (Bug#25172)
---
 src/xgselect.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/xgselect.c b/src/xgselect.c
index 2f23764..a9461a5 100644
--- a/src/xgselect.c
+++ b/src/xgselect.c
@@ -150,7 +150,7 @@ xg_select (int fds_lim, fd_set *rfds, fd_set *wfds, fd_set 
*efds,
 #else
   need_to_dispatch = true;
 #endif
-  if (need_to_dispatch)
+  if (need_to_dispatch && context_acquired)
     {
       int pselect_errno = errno;
       /* Prevent g_main_dispatch recursion, that would occur without



reply via email to

[Prev in Thread] Current Thread [Next in Thread]