Index: Objects/exceptions.c =================================================================== --- Objects/exceptions.c (revision 76759) +++ Objects/exceptions.c (working copy) @@ -120,6 +120,13 @@ static PyObject * BaseException_unicode(PyBaseExceptionObject *self) { + /* issue6108: if __str__ has been overridden in the subclass, unicode() + should return the message returned by __str__ as used to happen + before this method was implemented. */ + if (self->ob_type->tp_str != (reprfunc)BaseException_str) { + return PyObject_Unicode(PyObject_Str((PyObject*)self)); + } + PyObject *out; switch (PyTuple_GET_SIZE(self->args)) {