diff --git a/src/daemon.rkt b/src/daemon.rkt index 3b704c6..2538e04 100644 --- a/src/daemon.rkt +++ b/src/daemon.rkt @@ -8,12 +8,15 @@ (define (daemonize-thunk name boot-thunk) (lambda () (let reboot () - (with-handlers* ((exn:fail? (lambda (e) - (log-error "*** DAEMON CRASHED: ~a ***\n~a" - name - (exn->string e)) - (sleep 5) - (reboot)))) + ;; We would catch exn:fail? here, but exn:pretty in the web + ;; server is a subtype of exn, not of exn:fail, and that causes + ;; spurious permanent daemon exits. + (with-handlers* ((exn? (lambda (e) + (log-error "*** DAEMON CRASHED: ~a ***\n~a" + name + (exn->string e)) + (sleep 5) + (reboot)))) (define result (boot-thunk)) (log-warning "Daemon thread ~a exited normally (returning ~v)" name result)))))