From: Kaz K. <kky...@gm...> - 2006-06-16 18:44:02
|
I've noticed that CLISP on Linux goes nuts if standard input is abruptly closed. For instance, the network disconnects and times out, or you kill your SSH or telnet session. I rebuilt it with -g to see what is going on. It gets into a tight error handling loop that generates thousands of stack frames, revolving around some unbound variable. Here is a GDB backtrace from the top. Notice that the frame numbers are above 80,000. To try to shed some light, instead of having the CLISP just sit in a REPL, I had it executing this: (with-open-file (out "out.txt" :direction :output) (loop (write-line (read-line) out) (force-output out))) Notice the "~S: symbol ~S has no value:" errors, and the nested invocations of signal_and_debug. This is CLISP 2.38, compiled from source tarball, on RH Enterprise Linux 4. I will try the CVS head, when I have a bit of time. Note: I had to replace some characters in the range 80-FF in string literals in the GDB backtrace with the character X so I could post this. #85155 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85156 0x080f3e86 in C_invoke_debugger () at error.d:703 #85157 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85158 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85159 0x080f2b35 in end_error (stackptr=0xb711646c, start_driver_p=true) at error.d:317 #85160 0x080f2ba3 in fehler (errortype=unbound_variable, errorstring=0x8f3658c "~S: symbol ~S has no value") at error.d:349 #85161 0x0807a788 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0x20df4f43 "XXX8\0021\213XXX8\020XXX1\202\a") at eval.d:6626 #85162 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85163 0x080f3e86 in C_invoke_debugger () at error.d:703 #85164 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85165 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85166 0x080f2b35 in end_error (stackptr=0xb7116418, start_driver_p=true) at error.d:317 #85167 0x080f2ba3 in fehler (errortype=unbound_variable, errorstring=0x8f3658c "~S: symbol ~S has no value") at error.d:349 #85168 0x0807a788 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0x20df4f43 "XXX8\0021\213XXX8\020XXX1\202\a") at eval.d:6626 #85169 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85170 0x080f3e86 in C_invoke_debugger () at error.d:703 #85171 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85172 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85173 0x080f2b35 in end_error (stackptr=0xb71163c4, start_driver_p=true) at error.d:317 #85174 0x080f2ba3 in fehler (errortype=unbound_variable, errorstring=0x8f3658c "~S: symbol ~S has no value") at error.d:349 #85175 0x0807a788 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0x20df4f43 "XXX8\0021\213XXX8\020XXX1\202\a") at eval.d:6626 #85176 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85177 0x080f3e86 in C_invoke_debugger () at error.d:703 #85178 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85179 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85180 0x080f2b35 in end_error (stackptr=0xb7116370, start_driver_p=true) at error.d:317 #85181 0x080f2ba3 in fehler (errortype=unbound_variable, errorstring=0x8f3658c "~S: symbol ~S has no value") at error.d:349 #85182 0x0807a788 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0x20df4f43 "XXX8\0021\213XXX8\020XXX1\202\a") at eval.d:6626 #85183 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85184 0x080f3e86 in C_invoke_debugger () at error.d:703 #85185 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85186 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85187 0x080f2b35 in end_error (stackptr=0xb711631c, start_driver_p=true) at error.d:317 #85188 0x080f2ba3 in fehler (errortype=unbound_variable, errorstring=0x8f3658c "~S: symbol ~S has no value") at error.d:349 #85189 0x0807a788 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0x20df4f43 "XXX8\0021\213XXX8\020XXX1\202\a") at eval.d:6626 #85190 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85191 0x080f3e86 in C_invoke_debugger () at error.d:703 #85192 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85193 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85194 0x080f2b35 in end_error (stackptr=0xb71162c8, start_driver_p=true) at error.d:317 #85195 0x080f2ba3 in fehler (errortype=unbound_variable, errorstring=0x8f3658c "~S: symbol ~S has no value") at error.d:349 #85196 0x0807a788 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0x20df4f43 "XXX8\0021\213XXX8\020XXX1\202\a") at eval.d:6626 #85197 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85198 0x080f3e86 in C_invoke_debugger () at error.d:703 #85199 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85200 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85201 0x080f2b35 in end_error (stackptr=0xb7116274, start_driver_p=true) at error.d:317 #85202 0x080f37e2 in OS_error () at errunix.d:688 #85203 0x0809c8a7 in low_write_array_unbuffered_handle (stream=0x20e4c396, byteptr=0xbfff2fe0 "\n$XXX \004", len=1, persev=persev_full) at stream.d:5373 #85204 0x0809ca83 in wr_ch_unbuffered_unix (stream_=0x0, ch=0xbf826228) at stream.d:5448 #85205 0x080954ef in write_char (stream_=0xb7116270, ch=0xbf826228) at stream.d:895 #85206 0x08096843 in wr_ch_synonym (stream_=0x0, obj=0xc0000150) at stream.d:1374 #85207 0x080954ef in write_char (stream_=0xb711626c, ch=0xbf826228) at stream.d:895 #85208 0x080c1451 in C_terpri () at io.d:10563 #85209 0x0807afb8 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0xd1 <Address 0xd1 out of bounds>) at eval.d:7035 #85210 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85211 0x080f3e86 in C_invoke_debugger () at error.d:703 #85212 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85213 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85214 0x080f2b35 in end_error (stackptr=0xb7116218, start_driver_p=true) at error.d:317 #85215 0x080f37e2 in OS_error () at errunix.d:688 #85216 0x0809c8a7 in low_write_array_unbuffered_handle (stream=0x20e4c396, byteptr=0xbfff3360 "\n$XXX \004", len=1, persev=persev_full) at stream.d:5373 #85217 0x0809ca83 in wr_ch_unbuffered_unix (stream_=0x0, ch=0xbf826228) at stream.d:5448 #85218 0x080954ef in write_char (stream_=0xb7116214, ch=0xbf826228) at stream.d:895 #85219 0x08096843 in wr_ch_synonym (stream_=0x0, obj=0xc0000150) at stream.d:1374 #85220 0x080954ef in write_char (stream_=0xb7116210, ch=0xbf826228) at stream.d:895 #85221 0x080c1451 in C_terpri () at io.d:10563 #85222 0x0807afb8 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0xd1 <Address 0xd1 out of bounds>) at eval.d:7035 #85223 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85224 0x080f3e86 in C_invoke_debugger () at error.d:703 #85225 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85226 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85227 0x080f2b35 in end_error (stackptr=0xb71161bc, start_driver_p=true) at error.d:317 #85228 0x080f37e2 in OS_error () at errunix.d:688 #85229 0x0809c8a7 in low_write_array_unbuffered_handle (stream=0x20e4c396, byteptr=0xbfff36e0 "\n$XXX \004", len=1, persev=persev_full) at stream.d:5373 #85230 0x0809ca83 in wr_ch_unbuffered_unix (stream_=0x0, ch=0xbf826228) at stream.d:5448 #85231 0x080954ef in write_char (stream_=0xb71161b8, ch=0xbf826228) at stream.d:895 #85232 0x08096843 in wr_ch_synonym (stream_=0x0, obj=0xc0000150) at stream.d:1374 #85233 0x080954ef in write_char (stream_=0xb71161b4, ch=0xbf826228) at stream.d:895 #85234 0x080c1451 in C_terpri () at io.d:10563 #85235 0x0807afb8 in interpret_bytecode_ (closure=0x20df558e, codeptr=0x20df4e74, byteptr_in=0xd1 <Address 0xd1 out of bounds>) at eval.d:7035 #85236 0x08079cf8 in funcall_closure (closure=0x20df558e, args_on_stack=3) at eval.d:5779 #85237 0x080f3e86 in C_invoke_debugger () at error.d:703 #85238 0x080797ce in funcall_subr (fun=0x81bc6b6, args_on_stack=1) at eval.d:5339 #85239 0x080f27ce in signal_and_debug (condition=0xbf826238) at error.d:207 #85240 0x080f2b35 in end_error (stackptr=0xb7116160, start_driver_p=true) at error.d:317 #85241 0x080f2ba3 in fehler (errortype=end_of_file, errorstring=0x8f36540 "~S: input stream ~S has reached its end") at error.d:349 #85242 0x080b0f36 in fehler_eof_aussen (stream_=0xbf826238) at io.d:947 #85243 0x080b6a68 in eof_handling (mvc=0) at io.d:4504 #85244 0x080b6cff in C_read_line () at io.d:4602 #85245 0x08076587 in eval_subr (fun=0x81bcf36) at eval.d:3558 #85246 0x08075fa4 in eval1 (form=0x682c086a) at eval.d:3033 #85247 0x08075ba7 in eval (form=0x682c086a) at eval.d:2907 #85248 0x08076d3b in eval_subr (fun=0x81bd276) at eval.d:3437 #85249 0x08075fa4 in eval1 (form=0x682c0872) at eval.d:3033 #85250 0x08075ba7 in eval (form=0x682c0872) at eval.d:2907 #85251 0x0808190a in C_tagbody () at control.d:1621 #85252 0x080760b7 in eval_fsubr (fun=0x20cf7c9e, args=0xbf826238) at eval.d:3195 #85253 0x08075fd0 in eval1 (form=0x682c068a) at eval.d:3050 #85254 0x08075ba7 in eval (form=0x682c068a) at eval.d:2907 #85255 0x08080e0d in C_block () at control.d:1297 #85256 0x080760b7 in eval_fsubr (fun=0x20cf7c6e, args=0xbf826238) at eval.d:3195 #85257 0x08075fd0 in eval1 (form=0x682c0672) at eval.d:3050 #85258 0x08075ba7 in eval (form=0x682c0672) at eval.d:2907 #85259 0x08075d20 in eval1 (form=0x682c0672) at eval.d:2976 #85260 0x08075ba7 in eval (form=0x682c087a) at eval.d:2907 #85261 0x0807ee99 in C_progn () at control.d:318 #85262 0x080760b7 in eval_fsubr (fun=0x20cf7abe, args=0xbf826238) at eval.d:3195 #85263 0x08075fd0 in eval1 (form=0x682c07ea) at eval.d:3050 #85264 0x08075ba7 in eval (form=0x682c07ea) at eval.d:2907 #85265 0x08081ed2 in C_multiple_value_prog1 () at control.d:1755 #85266 0x080760b7 in eval_fsubr (fun=0x20cf7cfe, args=0xbf826238) at eval.d:3195 #85267 0x08075fd0 in eval1 (form=0x682c07aa) at eval.d:3050 #85268 0x08075ba7 in eval (form=0x682c07aa) at eval.d:2907 #85269 0x08082545 in C_unwind_protect () at control.d:1920 #85270 0x080760b7 in eval_fsubr (fun=0x20cf7d5e, args=0xbf826238) at eval.d:3195 #85271 0x08075fd0 in eval1 (form=0x682c076a) at eval.d:3050 #85272 0x08075ba7 in eval (form=0x682c076a) at eval.d:2907 #85273 0x0807f855 in C_let () at control.d:689 #85274 0x080760b7 in eval_fsubr (fun=0x20cf7b06, args=0xbf826238) at eval.d:3195 #85275 0x08075fd0 in eval1 (form=0x682c074a) at eval.d:3050 #85276 0x08075ba7 in eval (form=0x682c074a) at eval.d:2907 #85277 0x08075d20 in eval1 (form=0x682c074a) at eval.d:2976 #85278 0x08075ba7 in eval (form=0x682c08aa) at eval.d:2907 #85279 0x080f00c1 in C_read_eval_print () at debug.d:408 #85280 0x080797ce in funcall_subr (fun=0x81bc176, args_on_stack=2) at eval.d:5339 #85281 0x0807af12 in interpret_bytecode_ (closure=0x20e6456e, codeptr=0x20df4d0c, byteptr_in=0x41 <Address 0x41 out of bounds>) at eval.d:7021 #85282 0x08079cf8 in funcall_closure (closure=0x20e6456e, args_on_stack=0) at eval.d:5779 #85283 0x0808280a in C_driver () at control.d:1976 #85284 0x0807afb8 in interpret_bytecode_ (closure=0x20df4e56, codeptr=0x20df4cb4, byteptr_in=0x1e <Address 0x1e out of bounds>) at eval.d:7035 #85285 0x08079cf8 in funcall_closure (closure=0x20df4e56, args_on_stack=0) at eval.d:5779 #85286 0x080f02c7 in driver () at debug.d:477 #85287 0x08071a15 in reset (count=3071369679) at eval.d:517 #85288 0x080826ec in C_unwind_protect () at control.d:1952 #85289 0x080760b7 in eval_fsubr (fun=0x20cf7d5e, args=0xbf826238) at eval.d:3195 #85290 0x08075fd0 in eval1 (form=0x682c7caa) at eval.d:3050 #85291 0x08075ba7 in eval (form=0x682c7caa) at eval.d:2907 #85292 0x0807f855 in C_let () at control.d:689 #85293 0x080760b7 in eval_fsubr (fun=0x20cf7b06, args=0xbf826238) at eval.d:3195 #85294 0x08075fd0 in eval1 (form=0x682c7c8a) at eval.d:3050 #85295 0x08075ba7 in eval (form=0x682c7c8a) at eval.d:2907 #85296 0x08075d20 in eval1 (form=0x682c7c8a) at eval.d:2976 #85297 0x08075ba7 in eval (form=0x682c7dd2) at eval.d:2907 #85298 0x080f00c1 in C_read_eval_print () at debug.d:408 #85299 0x080797ce in funcall_subr (fun=0x81bc176, args_on_stack=2) at eval.d:5339 #85300 0x0807af12 in interpret_bytecode_ (closure=0x20e57256, codeptr=0x20df4d0c, byteptr_in=0x41 <Address 0x41 out of bounds>) at eval.d:7021 #85301 0x08079cf8 in funcall_closure (closure=0x20e57256, args_on_stack=0) at eval.d:5779 #85302 0x0808280a in C_driver () at control.d:1976 #85303 0x0807afb8 in interpret_bytecode_ (closure=0x20df4e56, codeptr=0x20df4cb4, byteptr_in=0x1e <Address 0x1e out of bounds>) at eval.d:7035 #85304 0x08079cf8 in funcall_closure (closure=0x20df4e56, args_on_stack=0) at eval.d:5779 #85305 0x0807b20a in interpret_bytecode_ (closure=0x20e49dd6, codeptr=0x20d5032c, byteptr_in=0x42 <Address 0x42 out of bounds>) at eval.d:7085 #85306 0x08079cf8 in funcall_closure (closure=0x20e49dd6, args_on_stack=0) at eval.d:5779 #85307 0x080f02c7 in driver () at debug.d:477 #85308 0x0806e25b in main (argc=8, argv=0xbfff9d94) at spvw.d:3320 |