Antoine Pitrou added the comment: Just apply the following patch to the original PR and it should work fine:
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c index 50c87c1..2ba98f2 100644 --- a/Modules/_io/bufferedio.c +++ b/Modules/_io/bufferedio.c @@ -409,12 +409,12 @@ static void buffered_dealloc(buffered *self) { self->finalizing = 1; + if (self->next != NULL) + remove_from_linked_list(self); if (_PyIOBase_finalize((PyObject *) self) < 0) return; _PyObject_GC_UNTRACK(self); self->ok = 0; - if (self->next != NULL) - remove_from_linked_list(self); if (self->weakreflist != NULL) PyObject_ClearWeakRefs((PyObject *)self); Py_CLEAR(self->raw); @@ -1860,8 +1860,12 @@ void _PyIO_atexit_flush(void) while (buffer_list_end.next != &buffer_list_end) { buffered *buf = buffer_list_end.next; remove_from_linked_list(buf); - buffered_flush(buf, NULL); - PyErr_Clear(); + if (buf->ok && !buf->finalizing) { + Py_INCREF(buf); + buffered_flush(buf, NULL); + Py_DECREF(buf); + PyErr_Clear(); + } } } ---------- nosy: +pitrou versions: +Python 3.6, Python 3.7 -Python 3.4, Python 3.5 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue17852> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com