# HG changeset patch # User Laurent Charignon # Date 1453408632 28800 # Node ID 4c6053a6b17d682b34fb88bbeb5e94ed9085d900 # Parent f6d73c8756e2e7db78a7622ce475b49723dd0ca3 run-tests: fix race condition Before this patch, it was possible for run-tests to crash on a race condition. The race condition happens in the following case: - the last test finishes and calls: done.put(None) - the context switches to the main thread that clears the channels list - the context switches to the last test mentioned above, it tries to access channels[channel] and crashes This happened to me while running run-tests. This patch fixes the issue by clearing the channel before considering that the test is done. diff -r f6d73c8756e2 -r 4c6053a6b17d tests/run-tests.py --- a/tests/run-tests.py Thu Jan 21 21:15:52 2016 +0000 +++ b/tests/run-tests.py Thu Jan 21 12:37:12 2016 -0800 @@ -1526,13 +1526,13 @@ channels[channel] = "=" + test.name[5:].split(".")[0] try: test(result) + channels[channel] = '' done.put(None) except KeyboardInterrupt: - pass + channels[channel] = '' except: # re-raises done.put(('!', test, 'run-test raised an error, see traceback')) raise - channels[channel] = '' def stat(): count = 0