Issue 43196: logging.config.dictConfig shuts down socket for existing SysLogHandlers
Issue43196
Created on 2021-02-10 20:45 by flyte, last changed 2022-04-11 14:59 by admin.
| Messages (3) | |||
|---|---|---|---|
| msg386805 - (view) | Author: Ellis Percival (flyte) | Date: 2021-02-10 20:45 | |
Since https://github.com/python/cpython/commit/b6c1989168efeb8b6320bec958e7e339270ac0ce dictConfig (and presumably fileConfig) has called logging.shutdown() on the existing handlers. This causes existing SysLogHandlers' sockets to be closed, which then causes a BadFileDescriptor error when you try to use it: --- Logging error --- Traceback (most recent call last): File "/usr/lib/python3.8/logging/handlers.py", line 940, in emit self.socket.sendto(msg, self.address) OSError: [Errno 9] Bad file descriptor Call stack: File "/home/flyte/workspaces/python/test.py", line 18, in <module> log.warning("Breaks") Reproduce the error with the following code: import logging.config import socket from logging.handlers import SysLogHandler log = logging.getLogger("logtest") syslog_handler = SysLogHandler(("127.0.0.1", 12345), socktype=socket.SOCK_DGRAM) log.addHandler(syslog_handler) log.warning("Works") logging.config.dictConfig( { "version": 1, "disable_existing_loggers": False, } ) log.warning("Breaks") This causes issues such as https://github.com/benoitc/gunicorn/issues/2073 where gunicorn sets up a SysLogHandler, then when any app (Django does it by default) calls dictConfig() it closes the socket used by gunicorn's SysLogHandler. Assuming this also affects Python 3.9 and 3.10, but untested. |
|||
| msg410832 - (view) | Author: Irit Katriel (iritkatriel) * ![]() |
Date: 2022-01-17 23:19 | |
I'm not getting this error on 3.11 on a Mac. Can you check on versions <= 3.9? Earlier versions are no longer getting bugfixes. |
|||
| msg411284 - (view) | Author: Stéphane Blondon (sblondon) * | Date: 2022-01-22 19:32 | |
I can reproduce the error on Debian/testing with: - Python 3.9.9 - Python 3.10.0 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:59:41 | admin | set | github: 87362 |
| 2022-01-22 19:36:11 | iritkatriel | set | versions: + Python 3.9, Python 3.10, - Python 3.7, Python 3.8 |
| 2022-01-22 19:32:44 | sblondon | set | status: pending -> open nosy: + sblondon messages: + msg411284 |
| 2022-01-17 23:19:54 | iritkatriel | set | status: open -> pending nosy:
+ iritkatriel type: crash -> behavior |
| 2021-02-11 14:06:15 | xtreak | set | nosy:
+ vinay.sajip, xtreak |
| 2021-02-11 14:02:21 | jmadden | set | nosy:
+ jmadden |
| 2021-02-10 20:45:36 | flyte | create | |
