Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problem with uuid package when embedding a python interpreter

8 views
Skip to first unread message

Jérôme Fuselier

unread,
Jun 30, 2009, 12:05:42 PM6/30/09
to
Hello,
I've tried to import a script in an embedded python intrepreter but
this script fails when it imports the uuid module. I have a
segmentation fault in Py_Finalize().

Here is a simple program which imitate my problem.

main.c :

#include "Python.h"

void test() {
Py_Initialize();
PyImport_Import(PyString_FromString("uuid"));
Py_Finalize();
}

main(int argc, char **argv)
{
for (i=0 ; i < 10; i++)
test();
}

For my application, I have to call Py_initialize and Py_Finalize
several times so factorizing them in the main function is not an easy
solution for me.

The core which is produced gives me this error :
Program terminated with signal 11, Segmentation fault.
#0 0x00190ef6 in type_dealloc (type=0x291320) at Objects/typeobject.c:
2609
2609 _PyObject_GC_UNTRACK(type);

Thanks for your help
Jerome

Gabriel Genellina

unread,
Jun 30, 2009, 2:02:13 PM6/30/09
to pytho...@python.org
En Tue, 30 Jun 2009 13:05:42 -0300, Jï¿œrï¿œme Fuselier
<jerome....@gmail.com> escribiᅵ:

> I've tried to import a script in an embedded python intrepreter but
> this script fails when it imports the uuid module. I have a
> segmentation fault in Py_Finalize().
>

> #include "Python.h"
>
> void test() {
> Py_Initialize();
> PyImport_Import(PyString_FromString("uuid"));
> Py_Finalize();
> }
>
> main(int argc, char **argv)
> {
> for (i=0 ; i < 10; i++)
> test();
> }
>
> For my application, I have to call Py_initialize and Py_Finalize
> several times so factorizing them in the main function is not an easy
> solution for me.

Are you sure you can't do that? Not even using Py_IsInitialized? Try to
avoid repeatedly calling Py_Initialize - won't work.

Python 2.x does not have a way to "un-initialize" an extension module
(that's a big flaw in Python design). Modules that contain global state
are likely to crash the interpreter when used by the second time. (Python
3 attempts to fix that)

--
Gabriel Genellina

Jérôme Fuselier

unread,
Jul 1, 2009, 6:14:20 AM7/1/09
to
On Jun 30, 7:02 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:
> En Tue, 30 Jun 2009 13:05:42 -0300, Jérôme Fuselier
> <jerome.fusel...@gmail.com> escribió:

Hi Gabriel,
Thanks for your response. I can modify my code to call
Py_IsInitialized which I didn't know before and this works well. The
problem is that I did not own the process which calls Py_Initialize
and Py_Finalize. I'm able to call Py_Initialize correctly but I can't
call Py_Finalize so this is not perfect.

At least I have a temporary solution which is not too bad.
Thanks,
Jerome

Aahz

unread,
Jul 1, 2009, 6:39:55 PM7/1/09
to
In article <7d5cfbf0-38d5-4505...@c36g2000yqn.googlegroups.com>,

=?ISO-8859-1?Q?J=E9r=F4me_Fuselier?= <jerome....@gmail.com> wrote:
>
>I've tried to import a script in an embedded python intrepreter but
>this script fails when it imports the uuid module. I have a
>segmentation fault in Py_Finalize().

You may want to also ask on the capi-sig mailing list.
--
Aahz (aa...@pythoncraft.com) <*> http://www.pythoncraft.com/

"as long as we like the same operating system, things are cool." --piranha

0 new messages