TIMER STRESS test fails on OpenBSD
Bug #375515 reported by
Josh Elsasser
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Medium
|
Unassigned |
Bug Description
The TIMER STRESS test in timer.impure.lisp schedules 200 timers for 1 second in the future, sleeps for 2 seconds, then asserts that the timer scheduler queue is empty. It appears that on OpenBSD, regardless of system speed, the kernel will only deliver up to 50 SIGALRMs per second. This means that after sleeping for 2 seconds there will still be about 150 timers in the queue and the stress test (as well as the following test) will fail. If the test is changed to sleep for 5 seconds then it will usually pass, but can still fail under moderate system load. Attached is a patch to sleep for 6 seconds on OpenBSD and 2 elsewhere.
tags: | added: review |
Changed in sbcl: | |
assignee: | nobody → Nikodemus Siivola (nikodemus) |
status: | Confirmed → In Progress |
tags: | removed: review |
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
Thank you. I'm holding off merging this for now, as I think the right thing would be for SCHEDULE-TIMER to notice that timers have already been scheduled for the time in question -- and to have a single SIGALRM run all the due timers. Maybe.
Of course, fixing that means a new stress test needs to be written too...