Source: python3.10
Severity: normal
User: debian-ia64@lists.debian.org
Usertags: ia64
X-Debbugs-Cc: debian-ia64@lists.debian.org

Hi!

Python 3.10 introduced a new memory allocator which is not compatible with
64-bit systems with large virtual address spaces at the moment because it
assumes address spaces to be limited to 48 bits [1].

This causes the Python interpretor to segfault on ia64. This problem can
be avoided by building with -DWITH_PYMALLOC_RADIX_TREE=0. For me, the following
change to debian/rules was sufficient:

--- debian/rules.orig   2021-10-08 12:10:19.000000000 +0000
+++ debian/rules        2021-10-09 12:04:40.362349542 +0000
@@ -179,6 +179,7 @@
 # on ia64, disable -O3 until gcc bug #85412 is fixed
 ifeq ($(DEB_HOST_ARCH),ia64)
     EXTRA_OPT_CFLAGS += -O2
+    DPKG_CPPFLAGS += -DWITH_PYMALLOC_RADIX_TREE=0
 endif
 # see #972202, and https://gcc.gnu.org/PR97431
 ifneq (,$(filter $(DEB_HOST_ARCH), hppa sh4))

FWIW, I think we can even drop the "EXTRA_OPT_CFLAGS += -O2" again as I could
build cpython from git without overriding the optimization level on the ia64
porterbox.

Thanks,
Adrian

> [1] https://github.com/python/cpython/pull/14474

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaub...@debian.org
`. `'   Freie Universitaet Berlin - glaub...@physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
--- debian/rules.orig   2021-10-08 12:10:19.000000000 +0000
+++ debian/rules        2021-10-09 12:04:40.362349542 +0000
@@ -179,6 +179,7 @@
 # on ia64, disable -O3 until gcc bug #85412 is fixed
 ifeq ($(DEB_HOST_ARCH),ia64)
     EXTRA_OPT_CFLAGS += -O2
+    DPKG_CPPFLAGS += -DWITH_PYMALLOC_RADIX_TREE=0
 endif
 # see #972202, and https://gcc.gnu.org/PR97431
 ifneq (,$(filter $(DEB_HOST_ARCH), hppa sh4))

Reply via email to