Opened 8 years ago

Last modified 7 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 Changed 7 years ago by sjamaan

Owner: set to Kon Lovett
Status: newassigned

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

comment:2 Changed 7 years ago by Kon Lovett

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.

Note: See TracTickets for help on using tickets.