[Python-Dev] Possible C API problem? (original) (raw)

Gary Robinson grobinson at goombah.com
Tue Jul 5 23:52:31 CEST 2005


You are doing something wrong. As getSumChiSquare is a METHNOARGS method, it shouldn't have a PyObject*args argument.

While I am aware enough of your general expertise to be surprised if you were in error in your statement below about VAR_NOARGS, your statement obove does seem to contradict the docs:

METH_VARARGS This is the typical calling convention, where the methods have the
type PyCFunction. The function expects two PyObject* values. The first one is the self object for methods; for module functions, it has the value given to Py_InitModule4() (or NULL if Py_InitModule() was used). The second parameter (often called args) is a tuple object representing all arguments. This parameter is typically processed using PyArg_ParseTuple() or PyArg_UnpackTuple.

...

METH_NOARGS Methods without parameters don't need to check whether arguments are
given if they are listed with the METH_NOARGS flag. They need to be of type PyCFunction. When used with object methods, the first parameter is typically named self and will hold a reference to the object instance. In all cases the second parameter will be NULL.


(http://python.fyxm.net/doc/2.3.5/api/common-structs.html#l2h-832

In other words the docs seem to explicitly state that the args will be supplied and what they will contain, so I'd assume that the C method should have them in their declaration. Moreover, METH_NOARGS needs to correspond to type PyCFunction, and the definition of type PyCFunction states that it must receive two args of PyObject*.

Are the docs wrong or am I misreading them? Or are you wrong?

Re your other comments, as mentioned in my personal email, the word done by folks in a couple of python forums in running tests does seem to confirm that there is some kind of bug involving gcc 3.3. The bus error appears independently of whether VAR_METHARGS or VAR_VARARGS is used. Also, (again as mentioned in my personal email) I do have 4 F/T experienced people working on this project, none of whom has the expertise to resolve this. Given that it looks like a real bug was uncovered, I think it was appropriate to post on the python forums about this. I only posted to python-dev because it was suggested that I do so by someone on the C++ sig.

Gary

--

Gary Robinson CTO Emergent Music, LLC grobinson at goombah.com 207-942-3463 Company: http://www.goombah.com Blog: http://www.garyrobinson.net



More information about the Python-Dev mailing list