New submission from Stefano Rivera:
setup.py build for a library using py_limited_api will always generate a stable
ABI tagged shared library, even under the pydebug interpreter.
This means that extensions that are built for a pydebug interpreter may be
accidentally (and brokenly) imported in a non-dbg interpreter and vice-versa.
e.g. in python-librtmp, with cffi 1.8.3:
$ python3-dbg setup.py build
...
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions
-Wl,-z,relro -Wl,-z,relro -g -Og
-fdebug-prefix-map=/build/python3.5-H9Fri6/python3.5-3.5.2=.
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
-D_FORTIFY_SOURCE=2
build/temp.linux-x86_64-3.5-pydebug/build/temp.linux-x86_64-3.5-pydebug/librtmp._librtmp.o
-lrtmp -o build/lib.linux-x86_64-3.5-pydebug/librtmp/_librtmp.abi3.so
Then:
$ cd build/lib.linux-x86_64-3.5-pydebug
$ python3 -c 'import librtmp'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File
"/tmp/python-librtmp-0.3.0/build/lib.linux-x86_64-3.5-pydebug/librtmp/__init__.py",
line 8, in <module>
from ._librtmp import ffi, lib as librtmp
ImportError:
/tmp/python-librtmp-0.3.0/build/lib.linux-x86_64-3.5-pydebug/librtmp/_librtmp.abi3.so:
undefined symbol: _Py_RefTotal
setuptools decides whether to use the stable ABI, by looking at
imp.get_suffixes(). And obviously, the importer is looking at that too. So, the
stable ABI tag should simply not be in there.
PEP3149 agrees with this. It has this quote from Martin v. Löwis:
--with-pydebug would not be supported by the stable ABI because this changes
the layout of PyObject , which is an exposed structure.
So, here's a patch, to disable support for the stable ABI under pydebug builds.
----------
components: Library (Lib)
files: pep384-pydbg.patch
keywords: patch
messages: 278381
nosy: stefanor
priority: normal
severity: normal
status: open
title: Don't support the PEP384 stable ABI in pydebug builds
type: behavior
versions: Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7
Added file: http://bugs.python.org/file45040/pep384-pydbg.patch
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue28401>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com