From 46dca3989d013a252d6f9ab803783b6f99e54012 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 4 Feb 2025 15:53:17 +0100 Subject: [PATCH 1/2] gh-129354: Use PyErr_FormatUnraisable() function Replace PyErr_WriteUnraisable() with PyErr_FormatUnraisable(). --- Modules/_io/fileio.c | 6 ++++-- Modules/_io/iobase.c | 3 ++- Modules/socketmodule.c | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c index cf0f1d671b507a..d85dbfe52d2fe1 100644 --- a/Modules/_io/fileio.c +++ b/Modules/_io/fileio.c @@ -105,8 +105,10 @@ fileio_dealloc_warn(PyObject *op, PyObject *source) PyObject *exc = PyErr_GetRaisedException(); if (PyErr_ResourceWarning(source, 1, "unclosed file %R", source)) { /* Spurious errors can appear at shutdown */ - if (PyErr_ExceptionMatches(PyExc_Warning)) - PyErr_WriteUnraisable((PyObject *) self); + if (PyErr_ExceptionMatches(PyExc_Warning)) { + PyErr_FormatUnraisable("Exception ignored " + "while closing file %R", self); + } } PyErr_SetRaisedException(exc); } diff --git a/Modules/_io/iobase.c b/Modules/_io/iobase.c index 419e5516b5c11e..537be1e7ba8888 100644 --- a/Modules/_io/iobase.c +++ b/Modules/_io/iobase.c @@ -314,7 +314,8 @@ iobase_finalize(PyObject *self) PyErr_Clear(); res = PyObject_CallMethodNoArgs((PyObject *)self, &_Py_ID(close)); if (res == NULL) { - PyErr_WriteUnraisable(self); + PyErr_FormatUnraisable("Exception ignored " + "while closing file %R", self); } else { Py_DECREF(res); diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index b178eb42ac8e6a..4b6d2dd1c5fc7b 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -5359,7 +5359,8 @@ sock_finalize(PyObject *self) if (PyErr_ResourceWarning((PyObject *)s, 1, "unclosed %R", s)) { /* Spurious errors can appear at shutdown */ if (PyErr_ExceptionMatches(PyExc_Warning)) { - PyErr_WriteUnraisable((PyObject *)s); + PyErr_FormatUnraisable("Exception ignored while " + "finalizing socket %R", s); } } From 8b21c3fa5c99de69032ab04d1cbbe803d097becc Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 4 Feb 2025 15:56:32 +0100 Subject: [PATCH 2/2] closing => finalizing --- Modules/_io/fileio.c | 2 +- Modules/_io/iobase.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c index d85dbfe52d2fe1..f27f2ed4843271 100644 --- a/Modules/_io/fileio.c +++ b/Modules/_io/fileio.c @@ -107,7 +107,7 @@ fileio_dealloc_warn(PyObject *op, PyObject *source) /* Spurious errors can appear at shutdown */ if (PyErr_ExceptionMatches(PyExc_Warning)) { PyErr_FormatUnraisable("Exception ignored " - "while closing file %R", self); + "while finalizing file %R", self); } } PyErr_SetRaisedException(exc); diff --git a/Modules/_io/iobase.c b/Modules/_io/iobase.c index 537be1e7ba8888..f87043df126895 100644 --- a/Modules/_io/iobase.c +++ b/Modules/_io/iobase.c @@ -315,7 +315,7 @@ iobase_finalize(PyObject *self) res = PyObject_CallMethodNoArgs((PyObject *)self, &_Py_ID(close)); if (res == NULL) { PyErr_FormatUnraisable("Exception ignored " - "while closing file %R", self); + "while finalizing file %R", self); } else { Py_DECREF(res);