-----Original Message----- From: "Martin v. Löwis" [mailto:martin@v.loewis.de] Sent: 15. júní 2010 21:20 To: Kristján Valur Jónsson Cc: python-dev@python.org Subject: Re: [Python-Dev] debug and release python
Am 15.06.2010 14:48, schrieb Kristján Valur Jónsson:
What I mean is that a third party software vendor supplies a foobarapp.pyd and a foobarapp_d.pyd dlls that link to python2x.dll and python2x_d.dll respectively. But the latter will have been compiled to match a certain settings of the objimpl.h header, which may not match whatever is being used to build the local python2x_d.dll. And thus, you get strange and hard to debug linker errors when trying to load external libraries.
Ok. But your proposed change doesn't fix that, right?
I.e. even with the change, it would *still* depend on objimpl.h (and other) settings what ABI this debug DLL exactly has.
I think it does. My proposal was perhaps not clear: For existing python versions, always export _PyObject_DebugMalloc et al. irrespective of the WITH_PYMALLOC and PYMALLOC_DEBUG settings. (PyObject_Malloc()) is always exported, even for builds without WITH_PYMALLOC) On new python versions, remove the _PyObject_DebugMalloc from the ABI. Make the switch internal to obmalloc.c, so that you can turn on the debug library by recompiling pythonxx_d.dll only (currently, you have to recompile the .pyd files too!)
But there are tons of ABI changes that may happen in a debug build. If you want to cope with all of them, you really need to recompile the source of all extensions. Are there? Can you give me an example? I thought we were careful to keep the interface shown to pyd files constant regardless of configuration settings.
K