* bug#425: 23.0.60; Hang in wait_reading_process_output
@ 2008-06-16 8:36 Markus Triska
0 siblings, 0 replies; 3+ messages in thread
From: Markus Triska @ 2008-06-16 8:36 UTC (permalink / raw)
To: emacs-pretest-bug
As recently reported by Joakim, Emacs occasionally hangs in
wait_reading_process_output. I can confirm that this also occurs when
process-adaptive-read-buffering is nil, as David suggested to test.
Here is a backtrace and the output after holding RET for a few seconds
when single-stepping through the code (I entered the debugger when
Emacs started to hang and could not be interrupted with Ctrl+g). At
the end of this transcript, I tried to inspect the value of
process-adaptive-read-buffering using "pv", and Emacs got un-stuck.
mt-computer:~/emacs/src mt$ gdb ./emacs
GNU gdb 6.3.50-20050815 (Apple version gdb-573) (Fri Oct 20 15:50:43 GMT 2006)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin"...Reading symbols for shared libraries ................................... done
DISPLAY = :0.0
TERM = xterm-color
Breakpoint 1 at 0x9010d3db
Breakpoint 2 at 0xed36a: file sysdep.c, line 1327.
(gdb) r
Starting program: /Users/mt/emacs/src/emacs
Reading symbols for shared libraries ....................................................................+++..+.++.+..++.+.++++++++++++.++++++ done
Program exited normally.
(gdb) r
Starting program: /Users/mt/emacs/src/emacs
Reading symbols for shared libraries .. done
Reading symbols for shared libraries . done
^Z
Program received signal SIGTSTP, Stopped (user).
0x9000ffec in read ()
(gdb) where
#0 0x9000ffec in read ()
#1 0x000ee1c6 in emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
#2 0x0017fda8 in read_process_output (proc=39993860, channel=0) at process.c:5407
#3 0x001865c4 in wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4840
#4 0x001873c8 in Faccept_process_output (process=39993860, seconds=50332681, millisec=50332681, just_this_one=50332681) at process.c:4310
#5 0x001435c8 in Ffuncall (nargs=2, args=0xbfffec00) at eval.c:3052
#6 0x0017c0e7 in Fbyte_code (bytestr=88432451, vector=39944884, maxdepth=2) at bytecode.c:678
#7 0x00142a76 in Feval (form=39478949) at eval.c:2383
#8 0x0014505f in internal_lisp_condition_case (var=50332681, bodyform=39478949, handlers=39479013) at eval.c:1456
#9 0x0017b01d in Fbyte_code (bytestr=88431283, vector=39945012, maxdepth=5) at bytecode.c:868
#10 0x00142eab in funcall_lambda (fun=39945332, nargs=0, arg_vector=0xbfffefb4) at eval.c:3229
#11 0x0014338e in Ffuncall (nargs=1, args=0xbfffefb0) at eval.c:3099
#12 0x0017c0e7 in Fbyte_code (bytestr=88429427, vector=39943924, maxdepth=4) at bytecode.c:678
#13 0x00142eab in funcall_lambda (fun=39944116, nargs=0, arg_vector=0xbffff190) at eval.c:3229
#14 0x0014338e in Ffuncall (nargs=1, args=0xbffff18c) at eval.c:3099
#15 0x00144918 in run_hook_with_args (nargs=1, args=0xbffff18c, cond=to_completion) at eval.c:2701
#16 0x00144aa0 in Frun_hooks (nargs=1, args=0xbffff244) at eval.c:2564
#17 0x00143533 in Ffuncall (nargs=2, args=0xbffff240) at eval.c:3023
#18 0x001447a3 in call1 (fn=50420393, arg1=50362881) at eval.c:2827
#19 0x000d5018 in safe_run_hooks_1 (hook=-1073745272) at keyboard.c:2152
#20 0x00141720 in internal_condition_case (bfun=0xd4fe6 <safe_run_hooks_1>, handlers=50332729, hfun=0xd5022 <safe_run_hooks_error>) at eval.c:1511
#21 0x000d46a9 in safe_run_hooks (hook=50362881) at keyboard.c:2180
#22 0x000e292a in command_loop_1 () at keyboard.c:1929
#23 0x00141720 in internal_condition_case (bfun=0xe2462 <command_loop_1>, handlers=50372321, hfun=0xdb2bd <cmd_error>) at eval.c:1511
#24 0x000d4414 in command_loop_2 () at keyboard.c:1367
#25 0x00141372 in internal_catch (tag=50368393, func=0xd43d0 <command_loop_2>, arg=50332681) at eval.c:1247
#26 0x000d41b6 in command_loop () at keyboard.c:1346
#27 0x000d426f in recursive_edit_1 () at keyboard.c:955
#28 0x000d43b7 in Frecursive_edit () at keyboard.c:1017
#29 0x000d33f7 in main (argc=1, argv=0xbffff7b8) at emacs.c:1772
Lisp Backtrace:
"accept-process-output" (0xbfffec04)
"byte-code" (0xbfffecf4)
"flyspell-word" (0xbfffefb4)
"flyspell-post-command-hook" (0xbffff190)
"run-hooks" (0xbffff244)
(gdb) bt full
#0 0x9000ffec in read ()
No symbol table info available.
#1 0x000ee1c6 in emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
No locals.
#2 0x0017fda8 in read_process_output (proc=39993860, channel=0) at process.c:5407
nbytes = -1
outstream = 0
old = (struct buffer *) 0x26c6a00
p = (struct Lisp_Process *) 0x2624200
opoint = 23
coding = (struct coding_system *) 0x2472d30
carryover = 0
#3 0x001865c4 in wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4840
nread = 9
total_nread = 0
timeout_reduced_for_timers = 0
channel = 85895270
nfds = -1
Available = {
fds_bits = {0 <repeats 32 times>}
}
Connecting = {
fds_bits = {0 <repeats 32 times>}
}
check_connect = 0
check_delay = 0
no_avail = 1
xerrno = 0
proc = 39993860
timeout = {
tv_sec = 100000,
tv_usec = 0
}
end_time = {
tv_sec = -1879027210,
tv_usec = 13
}
wait_channel = 0
got_some_input = 0
#4 0x001873c8 in Faccept_process_output (process=39993860, seconds=50332681, millisec=50332681, just_this_one=50332681) at process.c:4310
secs = 0
usecs = 0
process = 39993860
seconds = -1878982676
millisec = 0
#5 0x001435c8 in Ffuncall (nargs=2, args=0xbfffec00) at eval.c:3052
fun = -1073747072
original_fun = 3051368
funcar = -1878982676
numargs = 1
val = -1073752276
backtrace = {
next = 0xbfffed14,
function = 0xbfffec00,
args = 0xbfffec04,
nargs = 1,
evalargs = 0 '\0',
debug_on_exit = 0 '\0'
}
internal_args = (Lisp_Object *) 0xbfffeb80
i = -1878982676
args = (Lisp_Object *) 0x2e8f68
#6 0x0017c0e7 in Fbyte_code (bytestr=88432451, vector=39944884, maxdepth=2) at bytecode.c:678
op = 9
vectorp = (Lisp_Object *) 0x26182b8
stack = {
pc = 0x54c8f71 "\210\n@\305\230\203\002",
top = 0xbfffec04,
bottom = 0xbfffec00,
byte_string = 88432451,
byte_string_start = 0x54c8f6c "\303\030\304\t!\210\n@\305\230\203\002",
constants = 39944884,
next = 0xbfffeea4
}
result = -1073752276
bytestr = -1878982676
#7 0x00142a76 in Feval (form=39478949) at eval.c:2383
numargs = -1878982676
argvals = {88432451, 39944884, 16, 0, 0, 1021476, 1317971, 88432515}
args_left = 50332681
i = 3
fun = -1073752276
val = -1073752276
original_fun = 50443481
original_args = 39478957
funcar = -1878982676
backtrace = {
next = 0xbfffef6c,
function = 0xbfffed2c,
args = 0xbfffecf4,
nargs = 3,
evalargs = 1 '\001',
debug_on_exit = 0 '\0'
}
form = 50332681
#8 0x0014505f in internal_lisp_condition_case (var=50332681, bodyform=39478949, handlers=39479013) at eval.c:1456
val = -1878982676
c = {
tag = 50332681,
val = 50332681,
next = 0xbffff278,
gcpro = 0x0,
jmp = {895, 1562321, 8096, 1330880, 3, 1323480, 88903037, 50332681, -1073746424, -1073746608, 39976991, 662, 1331046, 88408087, 50331679, 31, -1073807360, 55},
backlist = 0xbfffef6c,
handlerlist = 0xbffff2ec,
lisp_eval_depth = 3,
pdlcount = 14,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0xbfffeea4
}
h = {
handler = 39479013,
var = 50332681,
chosen_clause = -1073746396,
tag = 0xbfffed68,
next = 0xbffff2ec
}
#9 0x0017b01d in Fbyte_code (bytestr=88431283, vector=39945012, maxdepth=5) at bytecode.c:868
handlers = 9
body = -1878982676
op = 9
vectorp = (Lisp_Object *) 0x2618338
stack = {
pc = 0x54c8d7d "\210\016&A\211\026&\204\372",
top = 0xbfffee20,
bottom = 0xbfffee20,
byte_string = 88431283,
byte_string_start = 0x54c8c90 "\306 \210\212\307 \210`\030\310\t!\032\311\211\033\034\311\211\035\036%\311\036&\n\311=\204,",
constants = 39945012,
next = 0xbffff024
}
result = -1073752276
bytestr = -1878982676
#10 0x00142eab in funcall_lambda (fun=39945332, nargs=0, arg_vector=0xbfffefb4) at eval.c:3229
val = 9
syms_left = 39945328
next = 39945328
i = 0
optional = 1
rest = 0
#11 0x0014338e in Ffuncall (nargs=1, args=0xbfffefb0) at eval.c:3099
fun = 39945332
original_fun = 88723865
funcar = -1878982676
numargs = 0
val = -1073752276
backtrace = {
next = 0xbffff0ec,
function = 0xbfffefb0,
args = 0xbfffefb4,
nargs = 0,
evalargs = 0 '\0',
debug_on_exit = 0 '\0'
}
internal_args = (Lisp_Object *) 0x2618474
i = -1878982676
args = (Lisp_Object *) 0x549d199
#12 0x0017c0e7 in Fbyte_code (bytestr=88429427, vector=39943924, maxdepth=4) at bytecode.c:678
op = 9
vectorp = (Lisp_Object *) 0x2617ef8
stack = {
pc = 0x54c8ad8 "\210p\025`\026\017\202;",
top = 0xbfffefb0,
bottom = 0xbfffefb0,
byte_string = 88429427,
byte_string_start = 0x54c8abc "\b\306\031\032\307 \203\025",
constants = 39943924,
next = 0x0
}
result = -1073752276
bytestr = -1878982676
#13 0x00142eab in funcall_lambda (fun=39944116, nargs=0, arg_vector=0xbffff190) at eval.c:3229
val = 9
syms_left = 39944112
next = 39944112
i = 0
optional = 41839712
rest = -1073745172
#14 0x0014338e in Ffuncall (nargs=1, args=0xbffff18c) at eval.c:3099
fun = 39944116
original_fun = 88723201
funcar = -1878982676
numargs = 0
val = -1073752276
backtrace = {
next = 0xbffff1ec,
function = 0xbffff18c,
args = 0xbffff190,
nargs = 0,
evalargs = 0 '\0',
debug_on_exit = 0 '\0'
}
internal_args = (Lisp_Object *) 0x2617fb4
i = -1878982676
args = (Lisp_Object *) 0x549cf01
#15 0x00144918 in run_hook_with_args (nargs=1, args=0xbffff18c, cond=to_completion) at eval.c:2701
sym = 50362881
val = -1073752276
ret = 50332681
globals = -1878982676
#16 0x00144aa0 in Frun_hooks (nargs=1, args=0xbffff244) at eval.c:2564
hook = {88723201}
i = 0
nargs = 1
#17 0x00143533 in Ffuncall (nargs=2, args=0xbffff240) at eval.c:3023
fun = 3044684
original_fun = -1073745340
funcar = -1878982676
numargs = 1
val = -1073752276
backtrace = {
next = 0x0,
function = 0xbffff240,
args = 0xbffff244,
nargs = 1,
evalargs = 0 '\0',
debug_on_exit = 0 '\0'
}
internal_args = (Lisp_Object *) 0x2e754c
i = -1878982676
args = (Lisp_Object *) 0xbffff244
#18 0x001447a3 in call1 (fn=50420393, arg1=50362881) at eval.c:2827
ret_ungc_val = 9
#19 0x000d5018 in safe_run_hooks_1 (hook=-1073745272) at keyboard.c:2152
No locals.
#20 0x00141720 in internal_condition_case (bfun=0xd4fe6 <safe_run_hooks_1>, handlers=50332729, hfun=0xd5022 <safe_run_hooks_error>) at eval.c:1511
val = -1878982676
c = {
tag = 50332681,
val = 50332681,
next = 0xbffff438,
gcpro = 0x0,
jmp = {895, 1244699, 8096, 1316399, -1073745192, 1244847, 3288768, 2, -1073745128, -1073745312, 58458143, 662, 1316548, 1179671, 31, 31, 0, 1310775},
backlist = 0x0,
handlerlist = 0xbffff4ac,
lisp_eval_depth = 0,
pdlcount = 3,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
h = {
handler = 50332729,
var = 50332681,
chosen_clause = 50418392,
tag = 0xbffff278,
next = 0xbffff4ac
}
#21 0x000d46a9 in safe_run_hooks (hook=50362881) at keyboard.c:2180
hook = 9
#22 0x000e292a in command_loop_1 () at keyboard.c:1929
cmd = 3266000
lose = 3266000
nonundocount = 0
keybuf = {192, 48, 3288640, 50332681, -1073744872, 897948, 42526269, -1073744946, -1073744904, -1879037169, 83886285, 152, -1073744946, 50332681, 92274831, 1, 43, -1879036413, 47201816, 50332729, 47191672, -1881082098, 5602146, 0, -1073744900, -1073745088, 0, 3342336, 50332681, 58657089}
i = 2
prev_modiff = 206
prev_buffer = (struct buffer *) 0x265ba20
already_adjusted = 0
#23 0x00141720 in internal_condition_case (bfun=0xe2462 <command_loop_1>, handlers=50372321, hfun=0xdb2bd <cmd_error>) at eval.c:1511
val = -1878982676
c = {
tag = 50332681,
val = 50332681,
next = 0xbffff53c,
gcpro = 0x0,
jmp = {895, 17831808, 8096, 1316399, 50332681, 50332681, 3279184, 3266000, -1073744680, -1073744864, 31, 658, 1316548, 1507351, 3276831, 3211295, -1073807360, -1073807305},
backlist = 0x0,
handlerlist = 0x0,
lisp_eval_depth = 0,
pdlcount = 2,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
h = {
handler = 50372321,
var = 50332681,
chosen_clause = 50332729,
tag = 0xbffff438,
next = 0x0
}
#24 0x000d4414 in command_loop_2 () at keyboard.c:1367
val = 9
#25 0x00141372 in internal_catch (tag=50368393, func=0xd43d0 <command_loop_2>, arg=50332681) at eval.c:1247
c = {
tag = 50368393,
val = 50332681,
next = 0x0,
gcpro = 0x0,
jmp = {895, 18, 8096, 1315542, 6, 18451, 3288144, 3266000, -1073744456, -1073744608, 50462751, 658, 1315685, 50462743, 50462751, 50331679, 47185920, 55},
backlist = 0x0,
handlerlist = 0x0,
lisp_eval_depth = 0,
pdlcount = 2,
poll_suppress_count = 1,
interrupt_input_blocked = 0,
byte_stack = 0x0
}
tag = 9
#26 0x000d41b6 in command_loop () at keyboard.c:1346
val = 9
#27 0x000d426f in recursive_edit_1 () at keyboard.c:955
val = 0
#28 0x000d43b7 in Frecursive_edit () at keyboard.c:1017
buffer = 50332681
#29 0x000d33f7 in main (argc=1, argv=0xbffff7b8) at emacs.c:1772
dummy = -1881117246
stack_bottom_variable = 0 '\0'
do_initial_setlocale = 1
skip_args = 0
rlim = {
rlim_cur = 8388608,
rlim_max = 67108864
}
no_loadup = 0
junk = 0x0
Lisp Backtrace:
"accept-process-output" (0xbfffec04)
"byte-code" (0xbfffecf4)
"flyspell-word" (0xbfffefb4)
"flyspell-post-command-hook" (0xbffff190)
"run-hooks" (0xbffff244)
(gdb) p major-mode
No symbol "major" in current context.
(gdb) print major-mode
No symbol "major" in current context.
(gdb) show major-mode
Undefined show command: "major-mode". Try "help show".
(gdb) s
Single stepping until exit from function read,
which has no line number information.
0x90110760 in cerror ()
(gdb)
Single stepping until exit from function cerror,
which has no line number information.
0x90001715 in cthread_set_errno_self ()
(gdb)
Single stepping until exit from function cthread_set_errno_self,
which has no line number information.
0x9016a970 in __i686.get_pc_thunk.bx ()
(gdb)
Single stepping until exit from function __i686.get_pc_thunk.bx,
which has no line number information.
0x90001723 in cthread_set_errno_self ()
(gdb)
Single stepping until exit from function cthread_set_errno_self,
which has no line number information.
0x9011078b in cerror ()
(gdb)
Single stepping until exit from function cerror,
which has no line number information.
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3382
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb)
4855 else if (nread == -1 && EAGAIN == errno)
(gdb)
4859 else if (nread == -1 && EWOULDBLOCK == errno)
(gdb)
4838 while (wait_proc->infd >= 0)
(gdb)
4840 nread = read_process_output (proc, wait_proc->infd);
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5352
5352 register struct buffer *old = current_buffer;
(gdb)
5353 register struct Lisp_Process *p = XPROCESS (proc);
(gdb)
5355 struct coding_system *coding = proc_decode_coding_system[channel];
(gdb)
5356 int carryover = p->decoding_carryover;
(gdb)
5390 chars = (char *) alloca (carryover + readmax);
(gdb)
5391 if (carryover)
(gdb)
5397 if (DATAGRAM_CHAN_P (channel))
(gdb)
5405 if (proc_buffered_char[channel] < 0)
(gdb)
5407 nbytes = emacs_read (channel, chars + carryover, readmax);
(gdb)
emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096) at sysdep.c:3378
3378 while ((rtnval = read (fildes, buf, nbyte)) == -1
(gdb)
3382 }
(gdb)
read_process_output (proc=39993860, channel=0) at process.c:5409
5409 if (nbytes > 0 && p->adaptive_read_buffering)
(gdb)
5448 p->decoding_carryover = 0;
(gdb)
5452 if (nbytes <= 0)
(gdb)
5454 if (nbytes < 0 || coding->mode & CODING_MODE_LAST_BLOCK)
(gdb)
5698 }
(gdb)
wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=0, do_display=0, wait_for_cell=50332681, wait_proc=0x2624200, just_wait_proc=0) at process.c:4842
4842 if (nread == 0)
(gdb)
4845 if (0 < nread)
(gdb)
4851 else if (nread == -1 && EIO == errno)
(gdb) pr process-adaptive-read
The history is empty.
(gdb) p process-adaptive-read
No symbol "adaptive" in current context.
(gdb) pr
The history is empty.
(gdb) p process-adaptive-read-buffering
No symbol "adaptive" in current context.
(gdb) pv process-adaptive-read-buffering
In GNU Emacs 23.0.60.1 (i386-apple-darwin8.11.1, GTK+ Version 2.12.9)
of 2008-06-15 on mt-computer.local
Windowing system distributor `The XFree86 Project, Inc', version 11.0.40400000
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: nil
value of $XMODIFIERS: nil
locale-coding-system: nil
default-enable-multibyte-characters: t
Major mode: Text
Minor modes in effect:
flyspell-mode: t
iswitchb-mode: t
openwith-mode: t
TeX-source-specials-mode: t
show-paren-mode: t
tooltip-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
global-auto-composition-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
abbrev-mode: t
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#425: 23.0.60; Hang in wait_reading_process_output
@ 2008-08-20 23:31 Chong Yidong
2008-08-21 5:20 ` Markus Triska
0 siblings, 1 reply; 3+ messages in thread
From: Chong Yidong @ 2008-08-20 23:31 UTC (permalink / raw)
To: Markus Triska; +Cc: 425
> As recently reported by Joakim, Emacs occasionally hangs in
> wait_reading_process_output. I can confirm that this also occurs when
> process-adaptive-read-buffering is nil, as David suggested to test.
> Here is a backtrace and the output after holding RET for a few seconds
> when single-stepping through the code (I entered the debugger when
> Emacs started to hang and could not be interrupted with Ctrl+g). At
> the end of this transcript, I tried to inspect the value of
> process-adaptive-read-buffering using "pv", and Emacs got un-stuck.
#1 0x000ee1c6 in emacs_read (fildes=0, buf=0xbfffd780 "\b", nbyte=4096)
at sysdep.c:3378
The filedes = 0 is suspicious. Are you able to reproduce this bug? If
so, is filedes always zero when it happens?
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#425: 23.0.60; Hang in wait_reading_process_output
2008-08-20 23:31 Chong Yidong
@ 2008-08-21 5:20 ` Markus Triska
0 siblings, 0 replies; 3+ messages in thread
From: Markus Triska @ 2008-08-21 5:20 UTC (permalink / raw)
To: Chong Yidong; +Cc: 425
Chong Yidong <cyd@stupidchicken.com> writes:
> The filedes = 0 is suspicious. Are you able to reproduce this bug? If
> so, is filedes always zero when it happens?
Both this problem and #84 turn out to be due to #562, which is now
fixed, so they can now both be closed. I especially thank Yamamoto
Mitsuharu, who described the right fix a long time ago. Thank you!
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-08-21 5:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-16 8:36 bug#425: 23.0.60; Hang in wait_reading_process_output Markus Triska
-- strict thread matches above, loose matches on Subject: below --
2008-08-20 23:31 Chong Yidong
2008-08-21 5:20 ` Markus Triska
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.