8000 bpo-45128: fixes `test_multiprocessing_fork` mysterious crash · python/cpython@1b1ae07 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1b1ae07

Browse files
committed
bpo-45128: fixes test_multiprocessing_fork mysterious crash
1 parent f4b94b1 commit 1b1ae07

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

Lib/test/test_logging.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4432,12 +4432,17 @@ def test_dict_arg(self):
44324432
def _extract_logrecord_process_name(key, logMultiprocessing, conn=None):
44334433
prev_logMultiprocessing = logging.logMultiprocessing
44344434
logging.logMultiprocessing = logMultiprocessing
4435+
old_mp = None
44354436
try:
44364437
import multiprocessing as mp
44374438
name = mp.current_process().name
44384439

44394440
r1 = logging.makeLogRecord({'msg': f'msg1_{key}'})
4441+
4442+
old_mp = sys.modules['multiprocessing']
44404443
del sys.modules['multiprocessing']
4444+
assert old_mp
4445+
44414446
r2 = logging.makeLogRecord({'msg': f'msg2_{key}'})
44424447

44434448
results = {'processName' : name,
@@ -4446,6 +4451,10 @@ def _extract_logrecord_process_name(key, logMultiprocessing, conn=None):
44464451
}
44474452
finally:
44484453
logging.logMultiprocessing = prev_logMultiprocessing
4454+
if old_mp is not None:
4455+
# We need to restore the previous `multiprocessing` module:
4456+
# https://bugs.python.org/issue45128
4457+
sys.modules['multiprocessing'] = old_mp
44494458
if conn:
44504459
conn.send(results)
44514460
else:
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix crash ``test_multiprocessing_fork`` due to ``LogRecordTest`` and
2+
``sys.modules`` manipulation.

0 commit comments

Comments
 (0)
0