Merge branch 'arm-closures-timeout' into 'master'

closures test: Avoid timeout on ARM64 CPUs

See merge request GNOME/glib!451

Reviewed-by: pwithnall
This commit is contained in:
Simon McVittie 2018-11-06 20:39:41 +00:00
commit 54549b7e43
2 changed files with 19 additions and 0 deletions

View File

@ -259,7 +259,19 @@ main (int argc,
thread1 = g_thread_create (thread1_main, closure, TRUE, NULL); thread1 = g_thread_create (thread1_main, closure, TRUE, NULL);
thread2 = g_thread_create (thread2_main, closure, TRUE, NULL); thread2 = g_thread_create (thread2_main, closure, TRUE, NULL);
/* The 16-bit compare-and-swap operations currently used for closure
* refcounts are really slow on some ARM CPUs, notably Cortex-A57.
* Reduce the number of iterations so that the test completes in a
* finite time, but don't reduce it so much that the main thread
* starves the other threads and causes a test failure.
*
* https://gitlab.gnome.org/GNOME/glib/issues/1316
* aka https://bugs.debian.org/880883 */
#if defined(__aarch64__) || defined(__arm__)
for (i = 0; i < 100000; i++)
#else
for (i = 0; i < 1000000; i++) for (i = 0; i < 1000000; i++)
#endif
{ {
static guint count = 0; static guint count = 0;
test_emissions (object); test_emissions (object);

View File

@ -54,6 +54,13 @@ foreach test_name, extra_args : refcount_tests
suite = ['refcount'] + extra_args.get('suite', []) suite = ['refcount'] + extra_args.get('suite', [])
timeout = suite.contains('slow') ? test_timeout_slow : test_timeout timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
# https://gitlab.gnome.org/GNOME/glib/issues/1316
# aka https://bugs.debian.org/880883
if test_name == 'closures' and ['arm', 'aarch64'].contains(host_cpu_family)
timeout = timeout * 10
endif
# FIXME? TESTS_ENVIRONMENT = LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset # FIXME? TESTS_ENVIRONMENT = LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset
test(test_name, exe, env : test_env, timeout : timeout, suite : suite) test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
endforeach endforeach