fix: _pid_alive treats an out-of-C-int-range pid as not alive (no OverflowError)
os.kill(pid, 0) raises OverflowError for a pid too large for a C int, which _pid_alive did not catch; a foreign <base>.<huge-number>.tmp file in the store dir then made every stale-tmp sweep (so every _save) crash. an over-range pid can't name a live process, so it's treated as not-alive like ProcessLookupError. Signed-off-by: disqualifier <dev@disqualifier.me>
This commit is contained in:
+2
-1
@@ -170,7 +170,8 @@ class AioKV:
|
||||
"""check whether pid refers to a live process, without permission to signal counting as alive"""
|
||||
try:
|
||||
os.kill(pid, 0)
|
||||
except ProcessLookupError:
|
||||
except (ProcessLookupError, OverflowError):
|
||||
# OverflowError: a pid too large for a C int can't name a live process
|
||||
return False
|
||||
except PermissionError:
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user