>>>>> On Mon, 15 Jan 2007 00:01:49 +0100, Chris Moore <[EMAIL PROTECTED]> said:
> If not, I'm more than happy to run any test cases you would like me > to try. I've tried debugging it in various ways myself, but the > timing seems to be so touchy that any attempt to observe what's > going on changes things. Could you test if the following patch affects the stability? YAMAMOTO Mitsuharu [EMAIL PROTECTED] Index: src/alloc.c =================================================================== RCS file: /sources/emacs/emacs/src/alloc.c,v retrieving revision 1.407 diff -c -p -r1.407 alloc.c *** src/alloc.c 21 Jan 2007 04:18:17 -0000 1.407 --- src/alloc.c 23 Jan 2007 07:43:15 -0000 *************** static pthread_mutex_t alloc_mutex; *** 131,137 **** do \ { \ if (pthread_equal (pthread_self (), main_thread)) \ ! sigblock (sigmask (SIGIO)); \ pthread_mutex_lock (&alloc_mutex); \ } \ while (0) --- 131,137 ---- do \ { \ if (pthread_equal (pthread_self (), main_thread)) \ ! BLOCK_INPUT; \ pthread_mutex_lock (&alloc_mutex); \ } \ while (0) *************** static pthread_mutex_t alloc_mutex; *** 140,146 **** { \ pthread_mutex_unlock (&alloc_mutex); \ if (pthread_equal (pthread_self (), main_thread)) \ ! sigunblock (sigmask (SIGIO)); \ } \ while (0) --- 140,146 ---- { \ pthread_mutex_unlock (&alloc_mutex); \ if (pthread_equal (pthread_self (), main_thread)) \ ! UNBLOCK_INPUT; \ } \ while (0) Index: src/blockinput.h =================================================================== RCS file: /sources/emacs/emacs/src/blockinput.h,v retrieving revision 1.21 diff -c -p -r1.21 blockinput.h *** src/blockinput.h 14 Jan 2007 03:24:37 -0000 1.21 --- src/blockinput.h 23 Jan 2007 07:43:15 -0000 *************** Boston, MA 02110-1301, USA. */ *** 49,55 **** interrupt_input_pending to a non-zero value. If that flag is set when input becomes unblocked, UNBLOCK_INPUT will send a new SIGIO. */ ! extern int interrupt_input_blocked; /* Nonzero means an input interrupt has arrived during the current critical section. */ --- 49,55 ---- interrupt_input_pending to a non-zero value. If that flag is set when input becomes unblocked, UNBLOCK_INPUT will send a new SIGIO. */ ! extern volatile int interrupt_input_blocked; /* Nonzero means an input interrupt has arrived during the current critical section. */ Index: src/keyboard.c =================================================================== RCS file: /sources/emacs/emacs/src/keyboard.c,v retrieving revision 1.890 diff -c -p -r1.890 keyboard.c *** src/keyboard.c 21 Jan 2007 04:18:15 -0000 1.890 --- src/keyboard.c 23 Jan 2007 07:43:16 -0000 *************** extern int errno; *** 90,96 **** /* Variables for blockinput.h: */ /* Non-zero if interrupt input is blocked right now. */ ! int interrupt_input_blocked; /* Nonzero means an input interrupt has arrived during the current critical section. */ --- 90,96 ---- /* Variables for blockinput.h: */ /* Non-zero if interrupt input is blocked right now. */ ! volatile int interrupt_input_blocked; /* Nonzero means an input interrupt has arrived during the current critical section. */ _______________________________________________ emacs-pretest-bug mailing list emacs-pretest-bug@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug