aboutsummaryrefslogtreecommitdiff
path: root/module/main.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-06-05 23:21:06 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-06-05 23:21:06 +0200
commit2e5403f74a3ece7568ee77748ec56ee29f99cb7a (patch)
treec67f77f0c7ef45dc849194668352b0ba882ae160 /module/main.scm
parentAdd warnings-are-errors config. (diff)
downloadcalp-2e5403f74a3ece7568ee77748ec56ee29f99cb7a.tar.gz
calp-2e5403f74a3ece7568ee77748ec56ee29f99cb7a.tar.xz
Change top error handler.
Diffstat (limited to 'module/main.scm')
-rw-r--r--module/main.scm44
1 files changed, 22 insertions, 22 deletions
diff --git a/module/main.scm b/module/main.scm
index 331268f8..31d6957c 100644
--- a/module/main.scm
+++ b/module/main.scm
@@ -169,29 +169,29 @@
(string->symbol stprof)))))
-(use-modules (system vm frame))
+(define logport (make-parameter (open-file "/tmp/calp.xml" "a")))
(define (main args)
+
+ (when (zero? (ftell (logport)))
+ (format (logport) "<?xml version=\"1.0\" encoding=\"UTF-8\"?>~%"))
+
+ (format (logport) "<run><start>~a</start>~%"
+ ((@ (datetime util) datetime->string)
+ ((@ (datetime) current-datetime))))
(report-time! "Program start")
;; ((@ (util config) print-configuration-documentation))
- (with-throw-handler #t
- (lambda () (dynamic-wind (lambda () 'noop)
- (lambda () (catch 'return (lambda () (wrapped-main args)) values))
- (lambda () (run-hook shutdown-hook))
- ))
- (lambda (err . args)
- (define stack (make-stack #t))
- (with-output-to-port (current-error-port)
- (lambda ()
- (format #t "bindings = ")
- (let loop ((frame (stack-ref stack 0)))
- (when frame
- (format #t "~{~a~^ ~}" (map binding-name (frame-bindings frame)))
- (let ((event (and=> (frame-lookup-binding frame 'event)
- binding-ref)))
- (when event
- (format (current-error-port) "event = ~a~%" event)))
-
- (loop (frame-previous frame))))
- (format #t "~%")
- )))))
+ (let ((stack #f))
+ (catch #t
+ (lambda () (dynamic-wind (lambda () 'noop)
+ (lambda () (catch 'return (lambda () (wrapped-main args)) values))
+ (lambda () (run-hook shutdown-hook))
+ ))
+ (lambda (err raiser fmt . args)
+ (format #t "Calp has crashed with [~a],
+~?~%See ~a for full backtrace~%"
+ err fmt args (port-filename (logport)))
+ (format (logport) "<trace>~%<![CDATA[~%")
+ (display-backtrace stack (logport))
+ (format (logport) "]]></trace></run>~%"))
+ (lambda _ (set! stack (make-stack #t))))))