diff --git a/Objects/object.c b/Objects/object.c --- a/Objects/object.c +++ b/Objects/object.c @@ -927,16 +927,21 @@ PyObject_GetAttr(PyObject *v, PyObject * char *name_str = _PyUnicode_AsString(name); if (name_str == NULL) return NULL; return (*tp->tp_getattr)(v, name_str); } PyErr_Format(PyExc_AttributeError, "'%.50s' object has no attribute '%U'", tp->tp_name, name); + + PyThreadState *tstate = PyThreadState_GET(); + PyObject *exc_value = tstate->exc_value; + PyObject_SetAttrString(exc_value, "origin", v); + return NULL; } int PyObject_HasAttr(PyObject *v, PyObject *name) { PyObject *res = PyObject_GetAttr(v, name); if (res != NULL) {