Skip to content
Snippets Groups Projects
Commit 7221d15a authored by Nick Mathewson's avatar Nick Mathewson :game_die:
Browse files

Merge commit 'origin/maint-0.2.1'

Conflicts:
	src/or/test.c
parents 311aca5a 5e679acc
No related branches found
No related tags found
No related merge requests found
o Minor bugfixes:
- Testsuite: In the util/threads test no longer free the test_mutex
before all worker threads have finished.
- Testsuite: The master thread could starve the worker threads quite
badly on certain systems, causing them to run only partially in
the allowed window. This resulted in test failures. Now the master
thread sleeps occasionally for a few microseconds while the two
worker-threads compete for the mutex.
......@@ -448,6 +448,11 @@ test_util_threads(void)
char *s1 = NULL, *s2 = NULL;
int done = 0, timedout = 0;
time_t started;
#ifndef MS_WINDOWS
struct timeval tv;
tv.tv_sec=0;
tv.tv_usec=10;
#endif
#ifndef TOR_IS_MULTITHREADED
/* Skip this test if we aren't threading. We should be threading most
* everywhere by now. */
......@@ -477,14 +482,18 @@ test_util_threads(void)
timedout = done = 1;
}
tor_mutex_release(_thread_test_mutex);
#ifndef MS_WINDOWS
/* Prevent the main thread from starving the worker threads. */
select(0, NULL, NULL, NULL, &tv);
#endif
}
tor_mutex_free(_thread_test_mutex);
tor_mutex_acquire(_thread_test_start1);
tor_mutex_release(_thread_test_start1);
tor_mutex_acquire(_thread_test_start2);
tor_mutex_release(_thread_test_start2);
tor_mutex_free(_thread_test_mutex);
if (timedout) {
printf("\nTimed out: %d %d", t1_count, t2_count);
test_assert(strmap_get(_thread_test_strmap, "thread 1"));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment