<div>> I think you need to set *CATCH-ERRORS-P* to a non-NIL value in order</div><div>> to prevent the debugger from being entered when an error is signaled.</div><div><br></div><div>Of course, this is a working server and * catch-errors-p * is set to T. </div>
<div>The problem arises not because of this.</div><div><br></div><div>Andrey</div><div><br></div><br><div class="gmail_quote">26 января 2010 г. 13:16 пользователь Hans Hübner <span dir="ltr"><<a href="mailto:hans.huebner@gmail.com">hans.huebner@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Mon, Jan 25, 2010 at 21:25, Anton Vodonosov <<a href="mailto:avodonosov@yandex.ru">avodonosov@yandex.ru</a>> wrote:<br>

> On one server running hunchentoot quite often the following error occurs:<br>
><br>
>  23: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #)<br>
>  24: (INVOKE-DEBUGGER #)<br>
>  25: (ERROR SB-BSD-SOCKETS:NOT-CONNECTED-ERROR)[:EXTERNAL]<br>
>  26: (SB-BSD-SOCKETS:SOCKET-ERROR "getpeername")<br>
>  27: ((SB-PCL::FAST-METHOD SB-BSD-SOCKETS:SOCKET-PEERNAME (SB-BSD-SOCKETS:SOCKET)) # # #)<br>
<br>
</div>I think you need to set *CATCH-ERRORS-P* to a non-NIL value in order<br>
to prevent the debugger from being entered when an error is signaled.<br>
To me, this looks right:<br>
<br>
#-:lispworks<br>
(defmethod handle-incoming-connection ((taskmaster<br>
one-thread-per-connection-taskmaster) socket)<br>
  ;; we are handling all conditions here as we want to make sure that<br>
  ;; the acceptor process never crashes while trying to create a<br>
  ;; worker thread; one such problem exists in<br>
  ;; GET-PEER-ADDRESS-AND-PORT which can signal socket conditions on<br>
  ;; some platforms in certain situations.<br>
  (handler-case*<br>
      (bt:make-thread (lambda ()<br>
                        (process-connection (taskmaster-acceptor<br>
taskmaster) socket))<br>
                      :name (format nil "Hunchentoot worker \(client:<br>
~A)" (client-as-string socket)))<br>
<br>
    (error (cond)<br>
      ;; need to bind *ACCEPTOR* so that LOG-MESSAGE can do its work.<br>
      (let ((*acceptor* (taskmaster-acceptor taskmaster)))<br>
        (log-message *lisp-errors-log-level*<br>
                     "Error while creating worker thread for new<br>
incoming connection: ~A" cond)))))<br>
<br>
I might certainly be missing something, so please let me know if this<br>
is the case.  For production installations, it is not advisable to<br>
have *CATCH-ERRORS-P* to be set to NIL.<br>
<br>
-Hans<br>
<br>
_______________________________________________<br>
tbnl-devel site list<br>
<a href="mailto:tbnl-devel@common-lisp.net">tbnl-devel@common-lisp.net</a><br>
<a href="http://common-lisp.net/mailman/listinfo/tbnl-devel" target="_blank">http://common-lisp.net/mailman/listinfo/tbnl-devel</a></blockquote></div><br>