gh-106238: Handle KeyboardInterrupt during logging._acquireLock() (GH-106239)
Co-authored-by: Ariel Eizenberg <ariel.eizenberg@pagaya.com>
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index ba2ed44..fe2039a 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -238,7 +238,11 @@ def _acquireLock():
This should be released with _releaseLock().
"""
if _lock:
- _lock.acquire()
+ try:
+ _lock.acquire()
+ except BaseException:
+ _lock.release()
+ raise
def _releaseLock():
"""
diff --git a/Misc/NEWS.d/next/Library/2023-06-29-12-40-52.gh-issue-106238.VulKb9.rst b/Misc/NEWS.d/next/Library/2023-06-29-12-40-52.gh-issue-106238.VulKb9.rst
new file mode 100644
index 0000000..52e7838
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-06-29-12-40-52.gh-issue-106238.VulKb9.rst
@@ -0,0 +1 @@
+Fix rare concurrency bug in lock acquisition by the logging package.