Hi, I'm encountering a few crashes with Fibers that happen when I call CALL-WITH-NEW-THREAD in a Fiber. TEST4 crashes every time. TEST5 never outputs, but it doesn't crash every time.
TEST1 is exactly like TEST5 except that I replace CALL-WITH-NEW-THREAD with SPAWN-FIBER. Is it a mistake from me or a Guile bug? If it is a bug, do you know if there are workarounds? Thank you, Clément (use-modules (fibers channels) (fibers)) ;; good (define (test1) (run-fibers (lambda () (spawn-fiber (lambda () (let ((channel (make-channel))) (spawn-fiber (lambda () (put-message channel "hello world"))) (format #t "~a~%" (get-message channel)))))) #:drain? #t)) ⊣ hello world ;; good (define (test2) (let ((channel (make-channel))) (call-with-new-thread (lambda () (put-message channel "hello world"))) (format #t "~a~%" (get-message channel)))) ⊣ hello world ⇒ #t ;; good (define (test3) (run-fibers (lambda () (let ((channel (make-channel))) (call-with-new-thread (lambda () (put-message channel "hello world"))) (format #t "~a~%" (get-message channel)))) #:drain? #t)) ⊣ hello world ⇒ #t ;; bad (define (test4) (run-fibers (lambda () (spawn-fiber (lambda () (let ((channel (make-channel))) (call-with-new-thread (lambda () (put-message channel "hello world"))))))) #:drain? #t)) ⊣ scheme@(guile-user)> In /home/clement/.guix-profile/share/guile/site/2.2/fibers/internal.scm: 402:6 1 (suspend-current-fiber _) In unknown file: 0 (scm-error misc-error #f "~A" ("Attempt to suspend fiber within continuation barrier") #f) ERROR: In procedure scm-error: Attempt to suspend fiber within continuation barrier ;; bad (define (test5) (run-fibers (lambda () (spawn-fiber (lambda () (let ((channel (make-channel))) (call-with-new-thread (lambda () (put-message channel "hello world"))) (format #t "~a~%" (get-message channel)))))) #:drain? #t)) ⊣ scheme@(guile-user)> In /home/clement/.guix-profile/share/guile/site/2.2/fibers/operations.scm: 188:5 3 (perform-operation #<<base-op> wrap-fn: #f try-fn: #<procedure try-fn ()> block-fn: #<procedure block-fn (put-flag put-sched resume-put)>>) In /home/clement/.guix-profile/share/guile/site/2.2/fibers/channels.scm: 88:26 2 (try-fn) In /home/clement/.guix-profile/share/guile/site/2.2/fibers/internal.scm: 219:6 1 (schedule-fiber! _ _) In unknown file: 0 (scm-error misc-error #f "~A" ("epoll instance is dead") #f) ERROR: In procedure scm-error: epoll instance is dead