[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/maint-0.3.5] Avoid a race condition in test_rebind.py
commit 8f43b8fb477e0fe538336fd0e1cb772d1686fb47
Author: teor <teor@xxxxxxxxxxxxxx>
Date: Sat Oct 6 16:05:04 2018 -0500
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.
---
changes/bug27968 | 3 +++
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 000000000..78c8eee33
--- /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 7ba3a5796..13e4446ce 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
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits