Message340940
Thanks for fixing the regression Victor.
Here is another potential problem.
On Android API 24 built with NDK r19, symbol resolution fails in the _socket shared library after changeset 8c3ecc6bacc8d0cd534f2b5b53ed962dd1368c7b when python is built with '--enable-shared':
generic_x86_64:/data/local/tmp/python $ python -c "import _socket"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: dlopen failed: cannot locate symbol "PyByteArray_Type" referenced by "/data/local/tmp/python/lib/python3.8/lib-dynload/_socket.cpython-38d.so"...
This does not happen when the build is configured without '--enable-shared'.
An NDK issue [1] reports the same problem and dimitry in this issue explains that on Android >= 23 the shared library must be linked against the shared library where the symbol is defined. Dimitry says that the Android loader was fixed in M (i.e. API 23) and it must refer to the changes listed in the "RTLD_LOCAL (Available in API level >= 23)" section of "Android changes for NDK developers" [2].
[1] https://github.com/android-ndk/ndk/issues/201
[2] https://android.googlesource.com/platform/bionic/+/android-n-mr2-preview-1/android-changes-for-ndk-developers.md |
|
Date |
User |
Action |
Args |
2019-04-26 20:34:56 | xdegaye | set | recipients:
+ xdegaye, lemburg, loewis, barry, ncoghlan, pitrou, vstinner, eric.araujo, piotr.dobrogost, dstufft |
2019-04-26 20:34:56 | xdegaye | set | messageid: <1556310896.88.0.681717096879.issue21536@roundup.psfhosted.org> |
2019-04-26 20:34:56 | xdegaye | link | issue21536 messages |
2019-04-26 20:34:56 | xdegaye | create | |
|