Skip to content

Commit ebee64b

Browse files
committed
Forcefully terminate
If process did not return within 5 sec assume that it is hanging and forcefully terminate
1 parent fd9940f commit ebee64b

File tree

1 file changed

+31
-8
lines changed

1 file changed

+31
-8
lines changed

setupext.py

+31-8
Original file line numberDiff line numberDiff line change
@@ -1788,17 +1788,26 @@ def check_requirements(self):
17881788
except:
17891789
return "unknown (can not use multiprocessing to determine)"
17901790
try:
1791-
res = p.map_async(backend_gtk3agg_internal_check, [0])
1792-
success, msg = res.get(timeout=5)[0]
1791+
res = p.map_async(backend_gtk3agg_internal_check, [0])
1792+
success, msg = res.get(timeout=5)[0]
1793+
except Queue.Empty:
1794+
p.terminate()
1795+
# No result returned. Probaly hanging, terminate the process.
1796+
success = False
1797+
raise
17931798
except:
1799+
p.close()
1800+
# Some other error.
17941801
success = False
17951802
msg = "Could not determine"
1796-
finally:
1803+
raise
1804+
else:
17971805
p.close()
1806+
finally:
17981807
p.join()
1808+
17991809
if success:
18001810
BackendAgg.force = True
1801-
18021811
return msg
18031812
else:
18041813
raise CheckFailed(msg)
@@ -1856,15 +1865,22 @@ def check_requirements(self):
18561865
try:
18571866
res = p.map_async(backend_gtk3cairo_internal_check, [0])
18581867
success, msg = res.get(timeout=5)[0]
1868+
except Queue.Empty:
1869+
p.terminate()
1870+
# No result returned. Probaly hanging, terminate the process.
1871+
success = False
1872+
raise
18591873
except:
1874+
p.close()
18601875
success = False
18611876
raise
1862-
finally:
1877+
else:
18631878
p.close()
1879+
finally:
18641880
p.join()
1881+
18651882
if success:
18661883
BackendAgg.force = True
1867-
18681884
return msg
18691885
else:
18701886
raise CheckFailed(msg)
@@ -1997,12 +2013,19 @@ def check_requirements(self):
19972013
try:
19982014
res = p.map_async(self.callback, [self])
19992015
msg = res.get(timeout=5)[0]
2016+
except Queue.Empty:
2017+
p.terminate()
2018+
# No result returned. Probaly hanging, terminate the process.
2019+
raise
20002020
except:
2001-
# If we hit an error on multiprocessing raise it
2021+
# Some other error.
2022+
p.close()
20022023
raise
2024+
else:
2025+
# Clean exit
2026+
p.close()
20032027
finally:
20042028
# Tidy up multiprocessing
2005-
p.close()
20062029
p.join()
20072030

20082031
return msg

0 commit comments

Comments
 (0)