Opened 9 years ago
Last modified 8 years ago
#1372 assigned defect
mailbox timeouts and thread signaling
| Reported by: | Caolan McMahon | Owned by: | Kon Lovett |
|---|---|---|---|
| Priority: | major | Milestone: | someday |
| Component: | extensions | Version: | 4.12.0 |
| Keywords: | mailbox | Cc: | |
| Estimated difficulty: |
Description
There appears to be a scheduler problem in the mailbox egg. If I signal a thread waiting on mailbox-receive! with a timeout, the program hangs and csi eats all my cpu.
(use srfi-18 mailbox)
(define mbox (make-mailbox))
(define primordial (current-thread))
(define t (thread-start! (lambda ()
(thread-sleep! 1)
(thread-signal! primordial 'example))))
;; this hangs forever and eats all my cycles (with timeout)
(print (mailbox-receive! mbox 4))
;; this exits as expected with the 'example exception (no timeout)
(print (mailbox-receive! mbox))
Change History (2)
comment:1 by , 8 years ago
| Owner: | set to |
|---|---|
| Status: | new → assigned |
comment:2 by , 8 years ago
The above sleeps the primodial thread. When no threads other than the primodial thread ('t' above not started) the primodial times-out. But w/ another thread to run the primodial is never timed-out; I need to look in the scheduler, sounds not right.
Suggest not doing a 'mailbox-receive!' while running as the primodial, at least for now.
Ex: 'reader-writer-test' uses a separate reader & writer threads.

I also noticed that mailbox fails to install right now...