diff -r a64a3da996ed Objects/typeobject.c --- a/Objects/typeobject.c Sun May 05 11:35:15 2013 -0500 +++ b/Objects/typeobject.c Wed May 08 08:33:30 2013 -0700 @@ -6510,6 +6510,10 @@ return -1; } obj = f->f_localsplus[0]; + if (obj != NULL && PyCell_Check(obj)) { + /* It might be a cell. See cell var initialization in ceval.c. */ + obj = PyCell_GET(obj); + } if (obj == NULL) { PyErr_SetString(PyExc_RuntimeError, "super(): arg[0] deleted"); diff -r a64a3da996ed Python/ceval.c --- a/Python/ceval.c Sun May 05 11:35:15 2013 -0500 +++ b/Python/ceval.c Wed May 08 08:33:30 2013 -0700 @@ -3517,8 +3517,13 @@ int arg; /* Possibly account for the cell variable being an argument. */ if (co->co_cell2arg != NULL && - (arg = co->co_cell2arg[i]) != CO_CELL_NOT_AN_ARG) + (arg = co->co_cell2arg[i]) != CO_CELL_NOT_AN_ARG) { c = PyCell_New(GETLOCAL(arg)); + /* Copy the cell into the argument slot, for super(). + See typeobject.c. */ + Py_INCREF(c); + SETLOCAL(arg, c); + } else c = PyCell_New(NULL); if (c == NULL)