[Python-Dev] Re: 2.1a2 release issues; mail.python.org still down
M.-A. Lemburg
mal@lemburg.com
Thu, 01 Feb 2001 18:43:52 +0100
"Fred L. Drake, Jr." wrote:
>
> M.-A. Lemburg writes:
> > Another issue: importing old extensions now causes a core dump
> > due to the new slots for weak refs beind written to.
>
> I think(!) this should only affect really modules from 1.5.? and
> earlier; type objects compiled after tp_xxx7/tp_xxx8 were added
> *should not* have a problem with this. You don't give enough
> information for me to be sure. Please let me know more if I'm wrong
> (possible!).
I've only tested these using my mx tools compiled against 1.5 --
really old, I know, but I still actively use that version. tp_xxx7/8
were added in Python 1.5.2, I think, so writing to them causes
the core dump.
> The only way I can see that there would be a problem like this is if
> the type object contains a positive value for the tp_weaklistoffset
> field (formerly tp_xxx8).
>
> > Solution: in addition to printing a warning, the _PyModule_Init()
> > APIs should ignore all modules having an API level < 1010.
>
> For the specific problem you mention, we could add a type flag
> (Py_TPFLAGS_HAVE_WEAKREFS) that could be tested; it would be set in
> Py_TPFLAGS_DEFAULT.
That would work, but is it really worth it ? The APIs have changed
considerably, so the fact that I got away with a warning in Python2.0
doesn't really mean anything -- I do have a problem now, though,
since maintaining versions for 1.5, 1.5.2, 2.0 and 2.1 will
be a pain :-/
> On the other hand, I'd be perfectly happy to "ignore" modules with
> the older C API version (especially if "ignore" lets me call
> Py_FatalError()!). The API version changed because of the changes to
> the function signatures of PyCode_New() and PyFrame_New(); these both
> require additional parameters in API version 1010.
Py_FatalError() is a bit too harsh, I guess. Wouldn't it
suffice to raise an ImportError exception and have Py_InitModule()
return NULL in case a module with an incompatible API version is
encountered ?
BTW, what happened to the same problem on Windows ? Do users
still get a seg fault ?
--
Marc-Andre Lemburg
______________________________________________________________________
Company: http://www.egenix.com/
Consulting: http://www.lemburg.com/
Python Pages: http://www.lemburg.com/python/