Tweak test_hashtab_thrash test to allow the critical threads to execute.
authorJoshua Colp <jcolp@digium.com>
Wed, 14 Aug 2013 18:10:08 +0000 (18:10 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 14 Aug 2013 18:10:08 +0000 (18:10 +0000)
Depending on certain conditions it was possible for the hashtab counting thread
to starve other threads, preventing them from executing in the expected fashion.
This change adds a sleep to allow the others to do what they need to do. While
this doesn't thrash the hashtab as much as previously, it at least works.

(closes issue ASTERISK-22276)
Reported by: Matt Jordan
........

Merged revisions 396619 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 396620 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396621 65c4cc65-6c06-0410-ace0-fbb531ad65f3

tests/test_hashtab_thrash.c

index 931cc43..619090a 100644 (file)
@@ -208,7 +208,7 @@ static void *hash_test_count(void *d)
 
                if (last_count == count) {
                        /* Allow other threads to run. */
 
                if (last_count == count) {
                        /* Allow other threads to run. */
-                       sched_yield();
+                       usleep(1);
                } else if (last_count > count) {
                        /* Make sure the hashtable never shrinks */
                        return "hashtab unexpectedly shrank";
                } else if (last_count > count) {
                        /* Make sure the hashtable never shrinks */
                        return "hashtab unexpectedly shrank";