Issue #9947: logging: Fixed locking bug in stopListening.
diff --git a/Lib/logging/config.py b/Lib/logging/config.py
index cc75e94..60744a0 100644
--- a/Lib/logging/config.py
+++ b/Lib/logging/config.py
@@ -917,8 +917,10 @@
     Stop the listening server which was created with a call to listen().
     """
     global _listener
-    if _listener:
-        logging._acquireLock()
-        _listener.abort = 1
-        _listener = None
+    logging._acquireLock()
+    try:
+        if _listener:
+            _listener.abort = 1
+            _listener = None
+    finally:
         logging._releaseLock()
diff --git a/Misc/NEWS b/Misc/NEWS
index c84a8ef..b3af982 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -68,6 +68,8 @@
 Library
 -------
 
+- Issue #9947: logging: Fixed locking bug in stopListening.
+
 - Issue #9945: logging: Fixed locking bugs in addHandler/removeHandler.
 
 - Issue #9936: Fixed executable lines' search in the trace module.