TIMER STRESS test fails on OpenBSD

Bug #375515 reported by Josh Elsasser on 2009-05-12
This bug affects 1 person
Affects Status Importance Assigned to Milestone

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.

Nikodemus Siivola (nikodemus) wrote :

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...

Changed in sbcl:
importance: Undecided → Medium
status: New → Confirmed
tags: added: asynch os-openbsd tests
tags: added: review
Changed in sbcl:
assignee: nobody → Nikodemus Siivola (nikodemus)
status: Confirmed → In Progress
Nikodemus Siivola (nikodemus) wrote :


Changed in sbcl:
assignee: Nikodemus Siivola (nikodemus) → nobody
status: In Progress → Fix Committed
tags: removed: review
Changed in sbcl:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers