[Python-Dev] Embedding demos are broken

Guido van Rossum guido@digicool.com
Tue, 20 Feb 2001 16:40:07 -0500

> Something changed recently, and now the Demo/embed programs are
> broken, e.g.
> % ./loop pass 2
> Could not find platform independent libraries <prefix>
> Could not find platform dependent libraries <exec_prefix>
> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
> 'import site' failed; use -v for traceback
> Segmentation fault (core dumped)
> The crash is happening in the second call to init_exceptions()
> (gdb) where
> #0  PyModule_GetDict (m=0x0) at Objects/moduleobject.c:40
> #1  0x8075ea8 in init_exceptions () at Python/exceptions.c:1058
> #2  0x8051880 in Py_Initialize () at Python/pythonrun.c:147
> #3  0x80516db in main (argc=3, argv=0xbffffa34) at loop.c:28
> because the attempt to import __builtin__ returns NULL.  I don't have
> time right now to look any deeper, but I suspect that the crash may be
> due to changes in the semantics of PyImport_ImportModule() which now
> goes through __import__.
> I'm posting this in case someone with spare cycles can look at it.
> -Barry

This was probably broken since PyImport_Import() was introduced in
1997!  The code in PyImport_Import() tried to save itself a bit of
work and save the __builtin__ module in a static variable.  But this
doesn't work across Py_Finalise()/Py_Initialize()!  It also doesn't
work when using multiple interpreter states created with

So I'm ripping out this code.  Looks like it's passing the test suite
so I'm checking in the patch.  It looks like we need a much more
serious test suite for multiple interpreters and repeatedly

--Guido van Rossum (home page: http://www.python.org/~guido/)