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.
This commit is contained in:
teor 2018-10-06 16:05:04 -05:00 committed by Nick Mathewson
parent 43211c3a0c
commit 8f43b8fb47
2 changed files with 14 additions and 2 deletions

3
changes/bug27968 Normal file
View File

@ -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.

View File

@ -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