; Show how a deadlock can occur when forking a new thread (use-modules (ice-9 popen) (ice-9 threads)) (define (repeat n f) (if (> n 0) (begin (f) (repeat (- n 1) f)))) (define (forever f) (f) (forever f)) (display "Spawn a thread that performs some writes\n") (make-thread forever (lambda () (display "write...\n"))) (display "Now exec some processes...\n") (forever (lambda () (let ((pipe (open-input-pipe "sleep 0"))) (close-pipe pipe))))