[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: BLOCK_INPUT on Mac OS X
From: |
YAMAMOTO Mitsuharu |
Subject: |
Re: BLOCK_INPUT on Mac OS X |
Date: |
Tue, 07 Sep 2004 17:21:50 +0900 |
User-agent: |
Wanderlust/2.10.1 (Watching The Wheels) SEMI/1.14.5 (Awara-Onsen) FLIM/1.14.5 (Demachiyanagi) APEL/10.6 Emacs/21.3.50 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) |
>>>>> On 06 Sep 2004 12:17:45 -0400, Stefan <address@hidden> said:
> Can you try and figure out where in the C code is Emacs looping? A
> well placed QUIT in there should do the trick.
It seems to be looping in `emacs_read' called from `Fcall_process'.
Here's the backtrace. I believe this can also be reproducible in
other "SIGIO systems".
YAMAMOTO Mitsuharu
address@hidden
(gdb) bt
#0 0x9000eac4 in read ()
#1 0x00139e90 in emacs_read (fildes=55, buf=0xbfff9d20 "", nbyte=16384) at
/Users/mituharu/src/cvs/emacs/src/sysdep.c:3260
#2 0x002342f4 in Fcall_process (nargs=6, args=0xbfffe7dc) at
/Users/mituharu/src/cvs/emacs/src/callproc.c:766
#3 0x002352c0 in Fcall_process_region (nargs=6, args=0xbfffe7dc) at
/Users/mituharu/src/cvs/emacs/src/callproc.c:1146
#4 0x001ceb74 in Ffuncall (nargs=9, args=0xbfffe7d0) at
/Users/mituharu/src/cvs/emacs/src/eval.c:2717
#5 0x00220900 in Fbyte_code (bytestr=3070347, vector=3070660, maxdepth=72) at
/Users/mituharu/src/cvs/emacs/src/bytecode.c:689
#6 0x001cf848 in funcall_lambda (fun=3070252, nargs=6, arg_vector=0xbfffea54)
at /Users/mituharu/src/cvs/emacs/src/eval.c:2923
#7 0x001cef94 in Ffuncall (nargs=7, args=0xbfffea50) at
/Users/mituharu/src/cvs/emacs/src/eval.c:2784
#8 0x00220900 in Fbyte_code (bytestr=3068307, vector=3068612, maxdepth=64) at
/Users/mituharu/src/cvs/emacs/src/bytecode.c:689
#9 0x001cf848 in funcall_lambda (fun=3068244, nargs=3, arg_vector=0xbfffecc4)
at /Users/mituharu/src/cvs/emacs/src/eval.c:2923
#10 0x001cef94 in Ffuncall (nargs=4, args=0xbfffecc0) at
/Users/mituharu/src/cvs/emacs/src/eval.c:2784
#11 0x001cdd60 in Fapply (nargs=2, args=0xbfffed88) at
/Users/mituharu/src/cvs/emacs/src/eval.c:2241
#12 0x001ce460 in apply1 (fn=58798457, arg=17411981) at
/Users/mituharu/src/cvs/emacs/src/eval.c:2494
#13 0x001c6464 in Fcall_interactively (function=58798457, record_flag=58721281,
keys=34606228) at /Users/mituharu/src/cvs/emacs/src/callint.c:407
#14 0x00128038 in Fcommand_execute (cmd=58798457, record_flag=58721281,
keys=58721281, special=58721281) at
/Users/mituharu/src/cvs/emacs/src/keyboard.c:9725
#15 0x00114684 in command_loop_1 () at
/Users/mituharu/src/cvs/emacs/src/keyboard.c:1776
#16 0x001cb64c in internal_condition_case (bfun=0x112640 <command_loop_1>,
handlers=58766377, hfun=0x111cd8 <cmd_error>) at
/Users/mituharu/src/cvs/emacs/src/eval.c:1346
#17 0x001122d4 in command_loop_2 () at
/Users/mituharu/src/cvs/emacs/src/keyboard.c:1306
#18 0x001caec0 in internal_catch (tag=58761641, func=0x112294 <command_loop_2>,
arg=58721281) at /Users/mituharu/src/cvs/emacs/src/eval.c:1107
#19 0x0011223c in command_loop () at
/Users/mituharu/src/cvs/emacs/src/keyboard.c:1285
#20 0x00111768 in recursive_edit_1 () at
/Users/mituharu/src/cvs/emacs/src/keyboard.c:978
#21 0x001119f4 in Frecursive_edit () at
/Users/mituharu/src/cvs/emacs/src/keyboard.c:1039
#22 0x0010f6a8 in main (argc=3, argv=0xbffffd84) at
/Users/mituharu/src/cvs/emacs/src/emacs.c:1687
(gdb) list
788 #ifdef VMS
789 char **envp;
790 #endif
791 {
792 #if GC_MARK_STACK
793 Lisp_Object dummy;
794 #endif
795 char stack_bottom_variable;
796 int do_initial_setlocale;
797 int skip_args = 0;
(gdb) up
#1 0x00139e90 in emacs_read (fildes=55, buf=0xbfff9d20 "", nbyte=16384) at
/Users/mituharu/src/cvs/emacs/src/sysdep.c:3260
3260 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb) list
3255 char *buf;
3256 unsigned int nbyte;
3257 {
3258 register int rtnval;
3259
3260 while ((rtnval = read (fildes, buf, nbyte)) == -1
3261 && (errno == EINTR));
3262 return (rtnval);
3263 }
3264
(gdb) up
#2 0x002342f4 in Fcall_process (nargs=6, args=0xbfffe7dc) at
/Users/mituharu/src/cvs/emacs/src/callproc.c:766
766 int this_read = emacs_read (fd[0], bufptr + nread,
(gdb) list
761 of the buffer size we have. But don't read
762 less than 1024--save that for the next bufferful. */
763 nread = carryover;
764 while (nread < bufsize - 1024)
765 {
766 int this_read = emacs_read (fd[0], bufptr + nread,
767 bufsize - nread);
768
769 if (this_read < 0)
770 goto give_up;
(gdb) p interrupt_input_pending
$1 = 1
(gdb) p Vquit_flag
$2 = 58721281
(gdb) p Vinhibit_quit
$3 = 58721281
(gdb) p Qnil
$4 = 58721281
(gdb) quit
The program is running. Exit anyway? (y or n) y
Debugger finished