diff options
author | teor <teor@torproject.org> | 2018-10-06 16:05:04 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-11-02 13:14:23 -0400 |
commit | 8f43b8fb477e0fe538336fd0e1cb772d1686fb47 (patch) | |
tree | 2b0dcfd6741ebc2865402de72d08f2707c40f410 | |
parent | 43211c3a0c4b56d4100daf3a541250b953fb7230 (diff) | |
download | tor-8f43b8fb477e0fe538336fd0e1cb772d1686fb47.tar.gz tor-8f43b8fb477e0fe538336fd0e1cb772d1686fb47.zip |
Avoid a race condition in test_rebind.py
If tor terminates due to SIGNAL HALT before test_rebind.py calls
tor_process.terminate(), an OSError 3 (no such process) is thrown.
Fixes part of bug 27968 on 0.3.5.1-alpha.
-rw-r--r-- | changes/bug27968 | 3 | ||||
-rw-r--r-- | src/test/test_rebind.py | 13 |
2 files changed, 14 insertions, 2 deletions
diff --git a/changes/bug27968 b/changes/bug27968 new file mode 100644 index 0000000000..78c8eee33a --- /dev/null +++ b/changes/bug27968 @@ -0,0 +1,3 @@ + o Minor bugfixes (testing): + - Avoid hangs and race conditions in test_rebind.py. + Fixes bug 27968; bugfix on 0.3.5.1-alpha. diff --git a/src/test/test_rebind.py b/src/test/test_rebind.py index 7ba3a5796d..13e4446cec 100644 --- a/src/test/test_rebind.py +++ b/src/test/test_rebind.py @@ -6,6 +6,7 @@ import socket import os import time import random +import errno def try_connecting_to_socksport(): socks_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -88,6 +89,14 @@ try_connecting_to_socksport() control_socket.sendall('SIGNAL HALT\r\n'.encode('utf8')) -time.sleep(0.1) +wait_for_log('exiting cleanly') print('OK') -tor_process.terminate() + +try: + tor_process.terminate() +except OSError as e: + if e.errno == errno.ESRCH: # errno 3: No such process + # assume tor has already exited due to SIGNAL HALT + print("Tor has already exited") + else: + raise |