]> git.ipfire.org Git - thirdparty/asterisk.git/commit
sched: ast_sched_del may return prematurely due to spurious wakeup 57/1157/1
authorJoshua Colp <jcolp@digium.com>
Sat, 29 Aug 2015 00:57:14 +0000 (21:57 -0300)
committerJoshua Colp <jcolp@digium.com>
Sat, 29 Aug 2015 00:57:14 +0000 (21:57 -0300)
commit85e1cb51b21c2d194647e16b81b5a1344d2ff911
treeb9dc72a04563005e89455e897c94f492318b33da
parentb5801fe42c37f4a9c075b2e96b108ce2344d23e9
sched: ast_sched_del may return prematurely due to spurious wakeup

When deleting a scheduled item if the item in question is currently
executing the ast_sched_del function waits until it has completed.
This is accomplished using ast_cond_wait. Unfortunately the
ast_cond_wait function can suffer from spurious wakeups so the
predicate needs to be checked after it returns to make sure it has
really woken up as a result of being signaled.

This change adds a loop around the ast_cond_wait to make sure that
it only exits when the executing task has really completed.

ASTERISK-25355 #close

Change-Id: I51198270eb0b637c956c61aa409f46283432be61
main/sched.c