python gives memory fault with my .so library
Seva Tonkonoh
seva3 at pacbell.net
Tue May 13 09:32:44 PDT 2003
When I try to run my extension shared library for Python,
it gives me "Memory fault(coredump)".
I am running FreeBSD 4.7 on VMWare 4 on Dell 4100 workstation.
I tried 2 versions of Python: 2.2.1 and 2.1.3. They both give the same error
message,
which makes me think I didn't create .so file correctly.
Here is how I compiled my .so file:
hello.so: hello.c
gcc hello.c -g -I/usr/local/include/python2.1 -fpic -shared -o hello.so
I tried hello.c from Lutz's O'Rei;;y book "Programming Python" because I had
the same problem
before with a more complex DLL, so I decided I have to try something simple
first
to narrow the problem.
hello.c code is at the bottom of this email, just in case.
What I tried to do with Python is:
-start python interpreter in the directory where .so file resides.
-do ">>> import hello". That runs fine.
-do ">>> hello.message('bla')". That gives "Memory fault(coredump)".
Please, cc me as I am not on the list.
Thanks in advance,
seva
/*****************************************************
hello.c
****************************************************/
#include <Python.h>
#include <string.h>
/* module functions */
static PyObject * /* returns object */
message(PyObject *self, PyObject *args) /* self unused in modules
*/
{ /* args from python call
*/
char *fromPython, result[64];
if (! PyArg_Parse(args, "(s)", &fromPython)) /* convert Python -> C */
return NULL; /* null=raise exception */
else {
strcpy(result, "Hello, "); /* build up C string */
strcat(result, fromPython); /* add passed Python
string */
return Py_BuildValue("s", result); /* convert C -> Python */
}
}
/* registration table */
static struct PyMethodDef hello_methods[] = {
{"message", message, 1}, /* method name, C func ptr, always-tuple
*/
{NULL, NULL} /* end of table marker */
};
,
/* module initializer */
void inithello() /* called on first import */
{ /* name matters if loaded dynamically
*/
(void) Py_InitModule("hello", hello_methods); /* mod name, table ptr
*/
}
More information about the freebsd-newbies
mailing list