Skip to content

Tests hang when run with -j > 1

It seems that the xfconfd termination hack frequently fails to work when make check is run with -j larger than 1.

$ make -j2 check
Making check in common
make[1]: Entering directory '/tmp/xfconf-4.15.0/common'
make  check-am
make[2]: Entering directory '/tmp/xfconf-4.15.0/common'
[...]
make[4]: Entering directory '/tmp/xfconf-4.15.0/tests/tests-end'
PASS: t-tests-end
============================================================================
Testsuite summary for xfconf 4.15.0
============================================================================
# TOTAL: 1
# PASS:  1
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
make[4]: Leaving directory '/tmp/xfconf-4.15.0/tests/tests-end'
make[3]: Leaving directory '/tmp/xfconf-4.15.0/tests/tests-end'
make[2]: Leaving directory '/tmp/xfconf-4.15.0/tests/tests-end'
make[2]: Entering directory '/tmp/xfconf-4.15.0/tests'
make[2]: Nothing to be done for 'check-am'.
make[2]: Leaving directory '/tmp/xfconf-4.15.0/tests'
make[1]: Leaving directory '/tmp/xfconf-4.15.0/tests'
Making check in completions
make[1]: Entering directory '/tmp/xfconf-4.15.0/completions'
make[1]: Nothing to be done for 'check'.
make[1]: Leaving directory '/tmp/xfconf-4.15.0/completions'
Making check in gsettings-backend
make[1]: Entering directory '/tmp/xfconf-4.15.0/gsettings-backend'
make[1]: Nothing to be done for 'check'.
make[1]: Leaving directory '/tmp/xfconf-4.15.0/gsettings-backend'
make[1]: Entering directory '/tmp/xfconf-4.15.0'
make[1]: Leaving directory '/tmp/xfconf-4.15.0'

At this point, make hangs and doesn't exit until I terminate xfconfd manually.

If I were to guess, the problem boils down to a race condition when starting xfconfd — when multiple tests are started simultaneously. I think this could be worked around by adding another serial test — tests-start that takes care of reliably starting a single instance of xfconfd.