From: Jurgen D. <jur...@pa...> - 2007-11-30 20:04:29
|
When trying to use a program with SBCL under popen2 (Python/Perl), in order to control it through stdout and get feedback through stdin (as seen from the controlling process), SBCL crashes. I have used the same code with CLISP and CMUCL, and these work as expected : when I write something to them, they give the expected responses. The first case encountered was on SBCL 1.0.11.18 on Debian, I also tested it with the 1.0.12 binary from the SBCL web site. CL test case : (defun reply (string) (let ((*print-escape* nil)) (write (format nil "~a~%" string)) (force-output *standard-output*))) (defun interactive-loop () (let ((stop nil) (input "")) (loop (setf input (read-line)) (cond ((equal input "exit") (reply "OK") (setf stop 't)) (t (reply input))) (if stop (return (values))))) (quit)) (interactive-loop) Python test case (the same could be created for Perl, the result stays the same) : #!/usr/bin/python import os import sys import time import os.path def command(handle, command): handle.write(command) handle.write("\n") handle.flush() def echo(handle): line = handle.readline() return line[0:-1] (control, result) = os.popen2(('sbcl', '--load', 'test.lisp')) command(control, "step") print echo(result) command(control, "stop") print echo(result) command(control, "exit") print echo(result) SBCL error output : Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded. 0: (BACKTRACE 536870911 #<SYNONYM-STREAM :SYMBOL SB-SYS:*TTY* {9115809}>) 1: ((LAMBDA NIL)) 2: ((LAMBDA NIL)) 3: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (LAMBDA NIL) {A871BDD}>) 4: (SB-IMPL::ERROR-ERROR) 5: (SB-IMPL::INFINITE-ERROR-PROTECTOR) 6: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 7: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 8: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 9: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 10: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 11: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871AA1}>) 12: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 13: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 14: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 15: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 16: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 17: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871959}>) 18: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 19: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 20: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 21: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 22: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 23: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871811}>) 24: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 25: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 26: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 27: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 28: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 29: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8716C9}>) 30: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 31: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 32: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 33: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 34: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 35: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871581}>) 36: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 37: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 38: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 39: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 40: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 41: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871439}>) 42: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 43: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 44: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 45: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 46: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 47: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8712F1}>) 48: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 49: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 50: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 51: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 52: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 53: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8711A9}>) 54: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 55: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 56: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 57: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 58: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 59: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871061}>) 60: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 61: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 62: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 63: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 64: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 65: (INVOKE-DEBUGGER #<SIMPLE-ERROR {A870D51}>) 66: (ERROR "Error during processing of --eval ~ option ~S:~%~% ~A") 67: ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 68: ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 69: (SIGNAL #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 70: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 71: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 72: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 73: (SB-IMPL::OUTPUT-CHAR-LATIN-9-LINE-BUFFERED #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> #\Newline) 74: (WRITE-CHAR #\Newline #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 75: (WRITE-CHAR #\Newline #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 76: (SB-PRETTY::OUTPUT-LINE #<SB-PRETTY:PRETTY-STREAM {A870301}> #S(SB-PRETTY::NEWLINE :POSN 4 :DEPTH 0 :SECTION-END NIL :KIND :LITERAL)) 77: (SB-PRETTY::MAYBE-OUTPUT #<SB-PRETTY:PRETTY-STREAM {A870301}> T) 78: (SB-PRETTY::PRETTY-SOUT #<SB-PRETTY:PRETTY-STREAM {A870301}> "step " 0 5) 79: (SB-IMPL::%WRITE-STRING "step " #<SB-PRETTY:PRETTY-STREAM {A870301}> 0 5) 80: (WRITE-STRING "step " #<SB-PRETTY:PRETTY-STREAM {A870301}> :START 0 :END NIL) 81: (SB-PRETTY:OUTPUT-PRETTY-OBJECT "step " #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 82: (WRITE "step ") 83: (REPLY "step") 84: (INTERACTIVE-LOOP) 85: (SB-INT:SIMPLE-EVAL-IN-LEXENV (INTERACTIVE-LOOP) #<NULL-LEXENV>) 86: (SB-FASL::LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" {A83A561}> NIL NIL) 87: (SB-FASL::INTERNAL-LOAD #P"test.lisp" #P"/home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" :ERROR NIL NIL :SOURCE :DEFAULT) 88: (SB-FASL::INTERNAL-LOAD #P"test.lisp" #P"/home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" :ERROR NIL NIL NIL :DEFAULT) 89: (LOAD #P"test.lisp") 90: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LOAD #P"test.lisp") #<NULL-LEXENV>) 91: (SB-IMPL::PROCESS-EVAL-OPTIONS ((LOAD #P"test.lisp"))) 92: (SB-IMPL::TOPLEVEL-INIT) 93: ((LABELS SB-IMPL::RESTART-LISP)) Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded. 0: (BACKTRACE 536870911 #<SYNONYM-STREAM :SYMBOL SB-SYS:*TTY* {A8CB2C1}>) 1: ((LAMBDA NIL)) 2: ((LAMBDA NIL)) 3: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (LAMBDA NIL) {A8CB3DD}>) 4: (SB-IMPL::ERROR-ERROR) 5: (SB-IMPL::INFINITE-ERROR-PROTECTOR) 6: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 7: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 8: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 9: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 10: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 11: (INVOKE-DEBUGGER #<SIMPLE-ERROR {A8CADC1}>) 12: ((LAMBDA NIL)) 13: ((LAMBDA NIL)) 14: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (LAMBDA NIL) {A871BDD}>) 15: (SB-IMPL::ERROR-ERROR) 16: (SB-IMPL::INFINITE-ERROR-PROTECTOR) 17: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 18: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 19: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 20: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 21: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 22: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871AA1}>) 23: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 24: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 25: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 26: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 27: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 28: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871959}>) 29: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 30: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 31: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 32: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 33: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 34: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871811}>) 35: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 36: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 37: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 38: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 39: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 40: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8716C9}>) 41: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 42: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 43: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 44: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 45: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 46: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871581}>) 47: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 48: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 49: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 50: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 51: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 52: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871439}>) 53: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 54: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 55: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 56: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 57: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 58: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8712F1}>) 59: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 60: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 61: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 62: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 63: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 64: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8711A9}>) 65: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 66: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 67: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 68: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 69: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 70: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871061}>) 71: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 72: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 73: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 74: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 75: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 76: (INVOKE-DEBUGGER #<SIMPLE-ERROR {A870D51}>) 77: (ERROR "Error during processing of --eval ~ option ~S:~%~% ~A") 78: ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 79: ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 80: (SIGNAL #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 81: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 82: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 83: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 84: (SB-IMPL::OUTPUT-CHAR-LATIN-9-LINE-BUFFERED #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> #\Newline) 85: (WRITE-CHAR #\Newline #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 86: (WRITE-CHAR #\Newline #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 87: (SB-PRETTY::OUTPUT-LINE #<SB-PRETTY:PRETTY-STREAM {A870301}> #S(SB-PRETTY::NEWLINE :POSN 4 :DEPTH 0 :SECTION-END NIL :KIND :LITERAL)) 88: (SB-PRETTY::MAYBE-OUTPUT #<SB-PRETTY:PRETTY-STREAM {A870301}> T) 89: (SB-PRETTY::PRETTY-SOUT #<SB-PRETTY:PRETTY-STREAM {A870301}> "step " 0 5) 90: (SB-IMPL::%WRITE-STRING "step " #<SB-PRETTY:PRETTY-STREAM {A870301}> 0 5) 91: (WRITE-STRING "step " #<SB-PRETTY:PRETTY-STREAM {A870301}> :START 0 :END NIL) 92: (SB-PRETTY:OUTPUT-PRETTY-OBJECT "step " #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 93: (WRITE "step ") 94: (REPLY "step") 95: (INTERACTIVE-LOOP) 96: (SB-INT:SIMPLE-EVAL-IN-LEXENV (INTERACTIVE-LOOP) #<NULL-LEXENV>) 97: (SB-FASL::LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" {A83A561}> NIL NIL) 98: (SB-FASL::INTERNAL-LOAD #P"test.lisp" #P"/home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" :ERROR NIL NIL :SOURCE :DEFAULT) 99: (SB-FASL::INTERNAL-LOAD #P"test.lisp" #P"/home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" :ERROR NIL NIL NIL :DEFAULT) 100: (LOAD #P"test.lisp") 101: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LOAD #P"test.lisp") #<NULL-LEXENV>) 102: (SB-IMPL::PROCESS-EVAL-OPTIONS ((LOAD #P"test.lisp"))) 103: (SB-IMPL::TOPLEVEL-INIT) 104: ((LABELS SB-IMPL::RESTART-LISP)) debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" {A82F801}>: Maximum error nesting depth exceeded Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL. restarts (invokable by number or by possibly-abbreviated name): 0: [CONTINUE] Ignore and continue with next --eval option. 1: [ABORT ] Skip rest of --eval options. 2: Skip to toplevel READ/EVAL/PRINT loop. 3: [QUIT ] Quit SBCL (calling #'QUIT, killing the process). ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 0] Regards, Jurgen |
From: Jurgen D. <jur...@pa...> - 2007-12-06 17:07:32
|
When trying to use a program with SBCL under popen2 (Python/Perl), in order to control it through stdout and get feedback through stdin (as seen from the controlling process), SBCL crashes. I have used the same code with CLISP and CMUCL, and these work as expected : when I write something to them, they give the expected responses. The first case encountered was on SBCL 1.0.11.18 on Debian, I also tested it with the 1.0.12 binary from the SBCL web site. CL test case : (defun reply (string) (let ((*print-escape* nil)) (write (format nil "~a~%" string)) (force-output *standard-output*))) (defun interactive-loop () (let ((stop nil) (input "")) (loop (setf input (read-line)) (cond ((equal input "exit") (reply "OK") (setf stop 't)) (t (reply input))) (if stop (return (values))))) (quit)) (interactive-loop) Python test case (the same could be created for Perl, the result stays the same) : #!/usr/bin/python import os import sys import time import os.path def command(handle, command): handle.write(command) handle.write("\n") handle.flush() def echo(handle): line = handle.readline() return line[0:-1] (control, result) = os.popen2(('sbcl', '--load', 'test.lisp')) command(control, "step") print echo(result) command(control, "stop") print echo(result) command(control, "exit") print echo(result) SBCL error output : Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded. 0: (BACKTRACE 536870911 #<SYNONYM-STREAM :SYMBOL SB-SYS:*TTY* {9115809}>) 1: ((LAMBDA NIL)) 2: ((LAMBDA NIL)) 3: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (LAMBDA NIL) {A871BDD}>) 4: (SB-IMPL::ERROR-ERROR) 5: (SB-IMPL::INFINITE-ERROR-PROTECTOR) 6: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 7: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 8: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 9: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 10: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 11: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871AA1}>) 12: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 13: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 14: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 15: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 16: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 17: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871959}>) 18: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 19: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 20: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 21: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 22: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 23: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871811}>) 24: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 25: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 26: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 27: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 28: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 29: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8716C9}>) 30: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 31: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 32: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 33: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 34: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 35: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871581}>) 36: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 37: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 38: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 39: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 40: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 41: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871439}>) 42: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 43: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 44: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 45: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 46: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 47: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8712F1}>) 48: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 49: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 50: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 51: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 52: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 53: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8711A9}>) 54: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 55: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 56: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 57: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 58: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 59: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871061}>) 60: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 61: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 62: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 63: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 64: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 65: (INVOKE-DEBUGGER #<SIMPLE-ERROR {A870D51}>) 66: (ERROR "Error during processing of --eval ~ option ~S:~%~% ~A") 67: ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 68: ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 69: (SIGNAL #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 70: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 71: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 72: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 73: (SB-IMPL::OUTPUT-CHAR-LATIN-9-LINE-BUFFERED #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> #\Newline) 74: (WRITE-CHAR #\Newline #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 75: (WRITE-CHAR #\Newline #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 76: (SB-PRETTY::OUTPUT-LINE #<SB-PRETTY:PRETTY-STREAM {A870301}> #S(SB-PRETTY::NEWLINE :POSN 4 :DEPTH 0 :SECTION-END NIL :KIND :LITERAL)) 77: (SB-PRETTY::MAYBE-OUTPUT #<SB-PRETTY:PRETTY-STREAM {A870301}> T) 78: (SB-PRETTY::PRETTY-SOUT #<SB-PRETTY:PRETTY-STREAM {A870301}> "step " 0 5) 79: (SB-IMPL::%WRITE-STRING "step " #<SB-PRETTY:PRETTY-STREAM {A870301}> 0 5) 80: (WRITE-STRING "step " #<SB-PRETTY:PRETTY-STREAM {A870301}> :START 0 :END NIL) 81: (SB-PRETTY:OUTPUT-PRETTY-OBJECT "step " #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 82: (WRITE "step ") 83: (REPLY "step") 84: (INTERACTIVE-LOOP) 85: (SB-INT:SIMPLE-EVAL-IN-LEXENV (INTERACTIVE-LOOP) #<NULL-LEXENV>) 86: (SB-FASL::LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" {A83A561}> NIL NIL) 87: (SB-FASL::INTERNAL-LOAD #P"test.lisp" #P"/home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" :ERROR NIL NIL :SOURCE :DEFAULT) 88: (SB-FASL::INTERNAL-LOAD #P"test.lisp" #P"/home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" :ERROR NIL NIL NIL :DEFAULT) 89: (LOAD #P"test.lisp") 90: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LOAD #P"test.lisp") #<NULL-LEXENV>) 91: (SB-IMPL::PROCESS-EVAL-OPTIONS ((LOAD #P"test.lisp"))) 92: (SB-IMPL::TOPLEVEL-INIT) 93: ((LABELS SB-IMPL::RESTART-LISP)) Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded. 0: (BACKTRACE 536870911 #<SYNONYM-STREAM :SYMBOL SB-SYS:*TTY* {A8CB2C1}>) 1: ((LAMBDA NIL)) 2: ((LAMBDA NIL)) 3: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (LAMBDA NIL) {A8CB3DD}>) 4: (SB-IMPL::ERROR-ERROR) 5: (SB-IMPL::INFINITE-ERROR-PROTECTOR) 6: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 7: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 8: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 9: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 10: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 11: (INVOKE-DEBUGGER #<SIMPLE-ERROR {A8CADC1}>) 12: ((LAMBDA NIL)) 13: ((LAMBDA NIL)) 14: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (LAMBDA NIL) {A871BDD}>) 15: (SB-IMPL::ERROR-ERROR) 16: (SB-IMPL::INFINITE-ERROR-PROTECTOR) 17: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 18: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 19: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 20: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 21: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 22: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871AA1}>) 23: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 24: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 25: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 26: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 27: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 28: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871959}>) 29: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 30: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 31: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 32: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 33: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 34: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871811}>) 35: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 36: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 37: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 38: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 39: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 40: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8716C9}>) 41: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 42: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 43: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 44: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 45: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 46: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871581}>) 47: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 48: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 49: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 50: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 51: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 52: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871439}>) 53: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 54: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 55: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 56: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 57: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 58: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8712F1}>) 59: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 60: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 61: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 62: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 63: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 64: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A8711A9}>) 65: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 66: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 67: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 68: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 69: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 70: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-STREAM-ERROR {A871061}>) 71: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 72: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 73: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 74: (FORCE-OUTPUT #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 75: (SB-INT:FLUSH-STANDARD-OUTPUT-STREAMS) 76: (INVOKE-DEBUGGER #<SIMPLE-ERROR {A870D51}>) 77: (ERROR "Error during processing of --eval ~ option ~S:~%~% ~A") 78: ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 79: ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 80: (SIGNAL #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 81: (ERROR SB-INT:SIMPLE-STREAM-ERROR) 82: (SB-IMPL::SIMPLE-STREAM-PERROR "couldn't write to ~S" #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> 32) 83: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 84: (SB-IMPL::OUTPUT-CHAR-LATIN-9-LINE-BUFFERED #<SB-SYS:FD-STREAM for "standard output" {A82FA39}> #\Newline) 85: (WRITE-CHAR #\Newline #<SB-SYS:FD-STREAM for "standard output" {A82FA39}>) 86: (WRITE-CHAR #\Newline #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 87: (SB-PRETTY::OUTPUT-LINE #<SB-PRETTY:PRETTY-STREAM {A870301}> #S(SB-PRETTY::NEWLINE :POSN 4 :DEPTH 0 :SECTION-END NIL :KIND :LITERAL)) 88: (SB-PRETTY::MAYBE-OUTPUT #<SB-PRETTY:PRETTY-STREAM {A870301}> T) 89: (SB-PRETTY::PRETTY-SOUT #<SB-PRETTY:PRETTY-STREAM {A870301}> "step " 0 5) 90: (SB-IMPL::%WRITE-STRING "step " #<SB-PRETTY:PRETTY-STREAM {A870301}> 0 5) 91: (WRITE-STRING "step " #<SB-PRETTY:PRETTY-STREAM {A870301}> :START 0 :END NIL) 92: (SB-PRETTY:OUTPUT-PRETTY-OBJECT "step " #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {916B229}>) 93: (WRITE "step ") 94: (REPLY "step") 95: (INTERACTIVE-LOOP) 96: (SB-INT:SIMPLE-EVAL-IN-LEXENV (INTERACTIVE-LOOP) #<NULL-LEXENV>) 97: (SB-FASL::LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" {A83A561}> NIL NIL) 98: (SB-FASL::INTERNAL-LOAD #P"test.lisp" #P"/home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" :ERROR NIL NIL :SOURCE :DEFAULT) 99: (SB-FASL::INTERNAL-LOAD #P"test.lisp" #P"/home/jurgen/shared/electronics/cpu-2/bugs/sbcl-subprocess/test.lisp" :ERROR NIL NIL NIL :DEFAULT) 100: (LOAD #P"test.lisp") 101: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LOAD #P"test.lisp") #<NULL-LEXENV>) 102: (SB-IMPL::PROCESS-EVAL-OPTIONS ((LOAD #P"test.lisp"))) 103: (SB-IMPL::TOPLEVEL-INIT) 104: ((LABELS SB-IMPL::RESTART-LISP)) debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" {A82F801}>: Maximum error nesting depth exceeded Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL. restarts (invokable by number or by possibly-abbreviated name): 0: [CONTINUE] Ignore and continue with next --eval option. 1: [ABORT ] Skip rest of --eval options. 2: Skip to toplevel READ/EVAL/PRINT loop. 3: [QUIT ] Quit SBCL (calling #'QUIT, killing the process). ((LAMBDA (SB-IMPL::E)) #<SB-INT:SIMPLE-STREAM-ERROR {A870AB1}>) 0] Regards, Jurgen |