Message257724
I added some debugging to the if(required) clause. This is interesting:
basicsize 16
slotnames 0 basicsize 16
tp_basicsize 80 basicsize 16
tp_basicsize comes in at 16 bytes. tp_dictoffset and tp_weaklistoffset must both be 0, and while slotnames is not Py_None, it must be adding 0 to the basicsize. Since sizeof(PyObject *) can't be 0, it must mean that Py_SIZE(slotnames) is 0 (since they are multiplied).
But as you can see tp_basicsize is 80. So essentially PyBaseObject_Type.tp_basicsize is 16 but obj->ob_type->tp_basicsize is 80, and that triggers the traceback. |
|
Date |
User |
Action |
Args |
2016-01-07 22:47:18 | barry | set | recipients:
+ barry, pitrou, alexandre.vassalotti, nadeem.vawda, Arfrever, kitterma, python-dev, serhiy.storchaka, josh.r |
2016-01-07 22:47:18 | barry | set | messageid: <1452206838.04.0.112789884094.issue22995@psf.upfronthosting.co.za> |
2016-01-07 22:47:18 | barry | link | issue22995 messages |
2016-01-07 22:47:17 | barry | create | |
|