[Openmcl-devel] Bug when writing to broken pipe?

Gary Byers gb at clozure.com
Mon Dec 8 00:47:55 PST 2014


On 12/02/2014 10:06:09 AM, Ron Garret wrote:
> This has nothing to do with your code, or even save-application.  CCL  
> just doesn’t handle a broken pipe on stdout gracefully.  You can  
> reproduce this problem at the command line.  Try:
> 
> ccl -=b e "(dotimes (i 1000) (print i))" | head
> 
> rg
> '

It doesn't gracefully handle

ccl -b -e '(close *terminal-io*)'

either, though it might be quietly hysterical instead of as loudly  
hysterical as it is in Andreas' test case.

A broken pipe on (a file descriptor associated with) *STANDARD-OUTPUT*  
is a fairly severe condition; it means that the process on the other  
end of the pipe has died unexpectedly.  There's no way to resurrect the  
dead process and reconnect it to the pipe; you could (maybe) somehow  
try to figure out some way to proceed in some cases, but I really think  
that this is more difficult to do than it may appear to be at first  
glance.  The most reasonable things that I can think of generally  
involve (a) trying to say "a broken pipe error occurred" via the most  
reliable means that you can and (b) terminate the process abruptly.   
That happens to be what happens to most programs that try to do I/O on  
a broken pipe on most/all Unixy systems: the process gets a SIGPIPE  
signal that is fatal unless handled (and IIRC largely impractical to  
handle in any reasonable or graceful way.)  CCL's kernel startup code  
says that the process wants to ignore SIGPIPE signals, and when those  
signals are ignored the OS will cause any I/O operation on a broken  
pipe to return an error code (EPIPE, IIRC).  If you wanted to revert to  
the default behavior (getting a fatal SIGPIPE signal on any broken  
pipe), you can do that via

? (#_signal #$SIGPIPE #$SIG_DFL)

and I really think that that may be as good as anything in cases like  
the one reported here.

Abruptly killing the CCL process doesn't sound like a very lisp-like  
way to handle an I/O error, but it the lisp-like way may assume that  
it's OK to write to streams based on fd #1.  The -b option can help to  
ensure that the output side of *TERMINAL-IO* is disjoint from  
*STANDARD-OUTPUT* and is instead based on the "controlling TTY", but  
this can only work if there is such a TTY (there generally isn't, for  
instance, if running in an Emacs shell buffer.)

I'm not sure that it's a good option, but I agree that it should be an  
option to use the :error-handler argument to SAVE-APPLICATION here  
(that might work or might not; for the curious, the reason that the  
option doesn't work is the same reason it didn't work in MCL, and it's  
not a good reason.)  The possible advantage of quitting instead of just  
dying from SIGPIPE is that quitting will try to reset lisp threads; the  
possible disadvatage is that that cleanup code may try to  write to  
some stream with a broken pipe under it.

Grace may be in the eye of  the beholder, but none of this sounds very  
graceful to me.



> On Dec 2, 2014, at 8:40 AM, Andreas Thiele <andreas at atp-media.de>  
> wrote:
> 
> > Thanks Ron.
> >
> > Yes indeed, ignore-errors is just fixes the problem in the provided  
> test case not in my application. I added the complete output plus  
> backtrace of my program. My program calls a function REVISION-REPORT.
> >
> > (defun revision-report (revs)
> >   (let ((sep (make-string 80 :initial-element #\-))
> >                 (sep2 (make-string 80 :initial-element #\=)))
> >     (loop :for rec :in (sort revs #'string< :key #'second) :do
> >        (format t "~%Commit: ~a~%" (getf rec :date))
> >        (format t "~{ ~a~%~}" (mapcar #'auto-utf (getf rec  
> :comment)))
> >        (when *with-files-p*
> >                 (format t "~a~%" sep)
> >                 (format t "Files:~%~{ ~a~%~}" (mapcar #'auto-utf  
> (getf rec :files))))
> >        (format t "~a~%" sep2))))
> >
> > The second format statement seems to be somehow problematic and  
> causes problems even if wrapped within IGNORE-ERRORS.
> >
> > Sorry I’m no CCL hacker J
> >
> > *WITH-FILES-P* is NIL during test. #’AUTO-UTF may be replaced by  
> some dumb function returning strings. (GETF REC :COMMENT) just  
> returns a few strings. Nothing fancy – just this breaking the pipe  
> thing.
> >
> > I think, you are right with the streams thing. I tried batch mode  
> which returns one broken pipe error message, which should not appear  
> with :ERROR-HANDLER :QUIT.
> >
> > Hope this is helpful. I can provide my (few hundered lines) program  
> if it is helpful.
> >
> > Best regards Andreas
> >
> > All kernel debugger messages follow (plus backtrace)
> >
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x183DF7F6> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process Initial(0).
> > Unrecoverable stack overflow.
> > ? for help
> > [4545] Clozure CL kernel debugger:b
> > (#xF758BEE8) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758BEFC) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758BF2C) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758BF60) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758BF6C) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758BF84) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758C048) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758C070) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758C084) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758C098) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758C0C8) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758C0FC) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758C108) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758C120) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758C1E4) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758C20C) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758C220) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758C234) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758C264) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758C298) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758C2A4) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758C2BC) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758C380) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758C3A8) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758C3BC) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758C3D0) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758C400) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758C434) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758C440) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758C458) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758C51C) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758C544) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758C558) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758C56C) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758C59C) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758C5D0) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758C5DC) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758C5F4) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758C6B8) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758C6E0) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758C6F4) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758C708) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758C738) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758C76C) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758C778) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758C790) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758C854) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758C87C) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758C890) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758C8A4) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758C8D4) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758C908) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758C914) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758C92C) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758C9F0) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758CA18) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758CA2C) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758CA40) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758CA70) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758CAA4) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758CAB0) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758CAC8) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758CB8C) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758CBB4) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758CBC8) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758CBDC) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758CC0C) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758CC40) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758CC4C) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758CC64) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758CD28) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758CD50) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758CD64) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758CD78) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758CDA8) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758CDDC) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758CDE8) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758CE00) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758CEC4) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758CEEC) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758CF00) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758CF14) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758CF44) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758CF78) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758CF84) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758CF9C) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758D060) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758D088) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758D09C) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758D0B0) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758D0E0) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758D114) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758D120) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758D138) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758D1FC) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758D224) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758D238) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758D24C) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758D27C) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758D2B0) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758D2BC) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758D2D4) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758D398) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758D3C0) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758D3D4) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758D3E8) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758D418) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758D44C) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758D458) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758D470) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758D534) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758D55C) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758D570) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758D584) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758D5B4) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758D5E8) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758D5F4) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758D60C) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758D6D0) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758D6F8) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758D70C) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758D720) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758D750) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758D784) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758D790) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758D7A8) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758D86C) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758D894) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758D8A8) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758D8BC) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758D8EC) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758D920) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758D92C) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758D944) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758DA08) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758DA30) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758DA44) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758DA58) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758DA88) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758DABC) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758DAC8) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758DAE0) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758DBA4) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758DBCC) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758DBE0) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758DBF4) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758DC24) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758DC58) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758DC64) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758DC7C) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758DD40) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758DD68) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758DD7C) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758DD90) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758DDC0) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758DDF4) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758DE00) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758DE18) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758DEDC) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758DF04) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758DF18) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758DF2C) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758DF5C) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758DF90) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758DF9C) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758DFB4) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758E078) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758E0A0) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758E0B4) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758E0C8) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758E0F8) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758E12C) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758E138) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758E150) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758E214) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758E23C) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758E250) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758E264) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758E294) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758E2C8) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758E2D4) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758E2EC) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758E3B0) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758E3D8) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758E3EC) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758E400) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758E430) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758E464) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758E470) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758E488) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758E54C) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758E574) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758E588) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758E59C) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758E5CC) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758E600) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758E60C) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758E624) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758E6E8) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758E710) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758E724) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758E738) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758E768) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758E79C) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758E7A8) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758E7C0) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758E884) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758E8AC) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758E8C0) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758E8D4) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758E904) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758E938) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758E944) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758E95C) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758EA20) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758EA48) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758EA5C) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758EA70) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758EAA0) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758EAD4) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758EAE0) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758EAF8) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758EBBC) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758EBE4) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758EBF8) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758EC0C) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758EC3C) #x1033607D : #<Method-Function STREAM-FORCE-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x10335E76> + 519
> > (#xF758EC70) #x1012A52D : #<Function FORCE-OUTPUT #x1012A4BE> + 111
> > (#xF758EC7C) #x103534B5 : #<Function %ACQUIRE-SHARED-RESOURCE  
> #x103531A6> + 783
> > (#xF758EC94) #x104B0B0D : #<Function BREAK-LOOP #x104B05CE> + 1343
> > (#xF758ED58) #x104B5625 : #<Function BREAK-LOOP-HANDLE-ERROR  
> #x104B50F6> + 1327
> > (#xF758ED80) #x10157E75 : #<Function %ERROR #x10157D0E> + 359
> > (#xF758ED94) #x102A7E4D : #<Method-Function STREAM-IO-ERROR (STREAM  
> T T) #x102A7DC6> + 135
> > (#xF758EDA8) #x1033DD25 : #<Function FD-STREAM-FORCE-OUTPUT  
> #x1033D8D6> + 1103
> > (#xF758EDD8) #x103343E5 : #<Method-Function STREAM-FINISH-OUTPUT  
> (BASIC-OUTPUT-STREAM) #x103341DE> + 519
> > (#xF758EE0C) #x1012A755 : #<Function FINISH-OUTPUT #x1012A716> + 63
> > (#xF758EE1C) #x10426FB5 : #<Function (:INTERNAL FLUSH-STREAM  
> (PROCESS-EXIT-APPLICATION (PROCESS T))) #x10426E66> + 335
> > (#xF758EE4C) #x104279ED : #<Method-Function  
> PROCESS-EXIT-APPLICATION (PROCESS T) #x10427846> + 423
> > (#xF758EE74) #x104A1F7D : #<Function (:INTERNAL QUIT) #x104A1DD6> +  
> 423
> > (#xF758EE98) #x10138175 : #<Function APPLY #x101380B6> + 191
> > (#xF758EEB4) #x10415A15 : #<Function THREAD-HANDLE-INTERRUPTS  
> #x1041578E> + 647
> > (#xF758EEE8) #x104FBDF5 : #<Function XCMAIN #x104FBB3E> + 695
> > (#xF758EF18) #x10193215 : #<Function %PASCAL-FUNCTIONS% #x101930BE>  
> + 343
> > (#xF758EF60) #x00000000 : #<Function %NANOSLEEP #x10407ACE> + ??
> > (#xF758EF90) #x10407D9D : #<Function %NANOSLEEP #x10407ACE> + 719
> > (#xF758EFD0) #x10425385 : #<Function HOUSEKEEPING-LOOP #x104251E6>  
> + 415
> > [4545] Clozure CL kernel debugger: k
> > fwgz at fwgz14:~/cvsrep$
> >
> > Von: Ron Garret [mailto:ron at flownet.com]
> > Gesendet: Montag, 1. Dezember 2014 19:06
> > An: Andreas Thiele
> > Cc: openmcl-devel at clozure.com
> > Betreff: Re: [Openmcl-devel] Bug when writing to broken pipe?
> >
> > This still looks like a CCL bug to me because you specified  
> :error-handler :quit.  My guess is that CCL is trying to write the  
> error message to stdout instead of stderr, so when you pipe stdout  
> and that pipe gets broken, the attempt to write the error message  
> causes another error, which eventually results in a stack overflow.   
> (I presume that you got more than just the four errors you included  
> in your message.)
> >
> > I’d file a ticket.
> >
> > On Dec 1, 2014, at 4:34 AM, Andreas Thiele <andreas at atp-media.de>  
> wrote:
> >
> >
> > Sorry, I found a fix. Just wrap the code within ignore-errors (or  
> similar).
> >
> > Regards
> > Andreas
> >
> >
> > Von: Openmcl-devel [mailto:openmcl-devel-bounces at clozure.com] Im  
> Auftrag von Andreas Thiele
> > Gesendet: Montag, 1. Dezember 2014 12:42
> > An: openmcl-devel at clozure.com
> > Betreff: [Openmcl-devel] Bug when writing to broken pipe?
> >
> > Dear All,
> >
> > I came across a tiny problem which I would consider a bug: I write  
> a lengthy output to *standard-output* on a Debian Linux. When I pipe  
> the output to another linux program and the pipe get broken, closure  
> lisp crashes. Is this behavior correct? If so, how can I avoid the  
> crash.
> >
> > In my case I pipe to linux less and terminate less by pressed  
> letter q very soon.
> >
> > My test code is:
> >
> > (defun test ()
> >   (loop :for i :from 1 :to 10000 :do
> >      (format t "This is a test line to produce a lengthy  
> output.~%")))
> >
> > (ccl:save-application "test"
> >                                      :toplevel-function #'test
> >                                      :error-handler :quit
> >                                      :prepend-kernel t)
> >
> > Tested with ccl-1.9 32 and 64 and ccl-1.10 32-bit.
> >
> > fwgz at fwgz14:~/cvsrep-bug$test | less
> >
> > and pressing ‘q’ very soon leads to
> >
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process toplevel(2).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x18353C96> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process toplevel(2).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x18353C96> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process toplevel(2).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x18353C96> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process toplevel(2).
> > > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1)  
> #x18353C96> :
> > >        Broken pipe during write
> > > While executing: #<CCL::STANDARD-KERNEL-METHOD  
> CCL::STREAM-IO-ERROR (STREAM T T)>, in process toplevel(2).
> > Unrecoverable stack overflow.
> > ? for help
> > [5134] Clozure CL kernel debugger:
> >
> > Any hints very welcome.
> >
> > Best Regards
> > Andreas Thiele
> >
> >
> >
> > _______________________________________________
> > Openmcl-devel mailing list
> > Openmcl-devel at clozure.com
> > https://lists.clozure.com/mailman/listinfo/openmcl-devel
> 
> 

------quoted attachment------
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> https://lists.clozure.com/mailman/listinfo/openmcl-devel
> 




More information about the Openmcl-devel mailing list