I have some code that was "evolved" rather than designed and is admittedly a
bit of a mess and I needed to add an "(exit)" deep in a block where running
a sub process has failed. However the (exit) never exits. This is true both
if I run compiled or interpreted. I have tried to make a small test case but
I can't reproduce the issue. I even replaced the (exit) with a call to a
function that prints a message and then does exit and it still doesn't exit.
I also tried _exit with the same result.
Any suggestions on what to look at or how to debug this?

My attempt to reproduce (which works fine) is below:

(define foo 8)

(define (runbroke cmd)
  (handle-exceptions
    exn
    (begin
      (print "FAILED! exn=" exn)
      #f)
    (cmd)))

(define bar 9)

(let ((res (runbroke (lambda ()(process "nadafoobar" "-l" "-blah")))))
  (if (not res)
      (begin
        (print "Failed to run, exiting with code 7")
        (exit 7))))

(exit bar)

BTW,  the code is visible at www.kiatoa.com/fossils/megatest, in
cmd-run-proc-each-line in process.scm.
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to