[hunchentoot-devel] Hard to catch errors below process-request

AVS lispercat at gmail.com
Fri Jan 21 16:15:40 UTC 2011


Here is the standalone file to reproduce the unicode failure problem
on my system (for the code below, put your path to quicklisp and save
the code in a test.lisp file ):
Load the file (for sbcl it's "sbcl --load test.lisp"), run lynx and
type in "lynx 127.0.0.1:1234/test.html". It should give you an empty
page.

;;test.lisp
(load "/your-path/quicklisp/setup.lisp")
(ql:quickload "hunchentoot")

(defpackage :test
  (:use :cl :hunchentoot))

(in-package :test)

(defparameter *server* (hunchentoot:start (make-instance
'hunchentoot:acceptor :port 1234)))
(hunchentoot:define-easy-handler (test :uri "/test.html") (name)
  (coerce '(#\RIGHT_DOUBLE_QUOTATION_MARK #\t #\e #\s #\t
#\RIGHT_DOUBLE_QUOTATION_MARK) 'string))
;;file end

Thank you,
Andrei


On Fri, Jan 21, 2011 at 5:05 AM, Hans Hübner <hans.huebner at gmail.com> wrote:
> Harak, Andrei,
>
> I had a look at the relevant positions in the Hunchentoot source and
> would be interested in solving the problem so that errors are
> reported, rather than swallowed, without requiring the user to set up
> special handlers.  My time is limited, though, so if you could help me
> by providing an executable test case that exposes the problem, it´d be
> greatly appreciated.
>
> Thanks,
> Hans
>
> On Fri, Jan 21, 2011 at 10:48 AM, Phil Marneweck <haragx at gmail.com> wrote:
>> On Fri, 2011-01-21 at 06:40 +0100, Hans Hübner wrote:
>>
>> On Fri, Jan 21, 2011 at 4:29 AM, AVS <lispercat at gmail.com> wrote:
>>> Thank you for the suggestion, Hans.
>>> In the mean time could you try one thing? Put some bad code inside
>>> start-output that will cause an exception (for instance (list a b)
>>> without a, b defined, or (/ 1 0)). Also (setf *catch-errors-p* nil).
>>> If things are as they should be it'll trigger the debugger. In my case
>>> it doesn't which is the cause of the whole issue.
>>> If it triggers the debugger break for you, it means there is something
>>> related to sbcl I am using.
>>
>> The debugger is not triggered, so the bug is real.  Having a way to
>> reproduce it by user code would be helpful nevertheless.
>>
>> -Hans
>>
>>
>> Like following?
>>
>> (defpackage :test
>>   (:nicknames :test )
>>   (:use :cl :hunchentoot :cl-who) )
>>
>>
>> (in-package :test)
>>
>> ;;(hunchentoot:start (make-instance 'hunchentoot:acceptor :port 1111 ))
>>
>>
>> (hunchentoot::define-easy-handler  (eish :uri "/eish.html"
>> :default-request-type :both)
>> ()
>>    (cl-who::with-html-output-to-string (*standard-output* nil :indent t)
>>      (cl-who::str "Hello World  XXX")))
>>
>>
>> (defmacro with-debugging (&body body)
>>   ;; Using this as debugging tool because hunchentoot
>>   ;; swallows all errors here.
>>   `(handler-bind ((error #'invoke-debugger))
>>      , at body))
>>
>> (defclass xxx ()
>>   ((ccc)) )
>>
>>
>> (defmethod handle-request :before ((*acceptor* hunchentoot::acceptor)
>> (*request* hunchentoot::request))
>>
>> ; (with-debugging
>>    (slot-value (make-instance 'xxx) 'xxx)
>> ;)
>> )
>>
>> Harag
>> _______________________________________________
>> tbnl-devel site list
>> tbnl-devel at common-lisp.net
>> http://common-lisp.net/mailman/listinfo/tbnl-devel
>>
>
> _______________________________________________
> tbnl-devel site list
> tbnl-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/tbnl-devel
>




More information about the Tbnl-devel mailing list