Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 750272 - dev-python/cython-0.29.21-r1 fails tests pyarray.test_extend, pyarray.test_extend_buffer (segmentation fault)
Summary: dev-python/cython-0.29.21-r1 fails tests pyarray.test_extend, pyarray.test_ex...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Python Gentoo Team
URL:
Whiteboard:
Keywords: TESTFAILURE
Depends on:
Blocks:
 
Reported: 2020-10-20 00:02 UTC by Kent Fredric (IRC: kent\n) (RETIRED)
Modified: 2021-08-21 22:20 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log.gz (build.log.gz,85.39 KB, application/gzip)
2020-10-20 00:02 UTC, Kent Fredric (IRC: kent\n) (RETIRED)
Details
pyarray test .so and coredump (pyarray_test.tar.gz,662.66 KB, application/gzip)
2020-10-27 21:59 UTC, Kent Fredric (IRC: kent\n) (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2020-10-20 00:02:54 UTC
Created attachment 667238 [details]
build.log.gz

On m68k via qemu-user , 9 hours into the test suite:

#### 2020-10-19 22:48:23.272206
test_buffer (pyarray)
Doctest: pyarray.test_buffer ... ok
test_buffer_typed (pyarray)
Doctest: pyarray.test_buffer_typed ... ok
test_copy (pyarray)
Doctest: pyarray.test_copy ... ok
test_extend (pyarray)
Doctest: pyarray.test_extend ... FAIL
test_extend_buffer (pyarray)
Doctest: pyarray.test_extend_buffer ... qemu: uncaught target signal 11 (Segmentation fault) - core dumped
/var/tmp/portage/dev-python/cython-0.29.21-r1/temp/environment: line 3164:  8641 Segmentation fault      "${PYTHON}" runtests.py -vv --work-dir "${BUILD_DIR}"/tests
 * ERROR: dev-python/cython-0.29.21-r1::gentoo failed (test phase):
 *   Tests fail with python3.7
 * 
 * Call stack:
 *     ebuild.sh, line  125:  Called src_test
 *   environment, line 3225:  Called distutils-r1_src_test
 *   environment, line 1280:  Called _distutils-r1_run_foreach_impl 'python_test'
 *   environment, line  481:  Called python_foreach_impl 'distutils-r1_run_phase' 'python_test'
 *   environment, line 2805:  Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test'
 *   environment, line 2262:  Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test'
 *   environment, line 2260:  Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test'
 *   environment, line  853:  Called distutils-r1_run_phase 'python_test'
 *   environment, line 1217:  Called python_test
 *   environment, line 3167:  Called die
 * The specific snippet of code:
 *       "${PYTHON}" runtests.py -vv --work-dir "${BUILD_DIR}"/tests || die "Tests fail with ${EPYTHON}"


Now its worth mentioning here qemu-segfaults are not necessarily python bugs ... I've seen these before simply because too many vforks() happened and the 4G-VSize for each process being a 32bit limit seemed to play a role, but I explicitly set MAKEOPTS="-j1" to avoid this issue.

But admittedly, I need a better emulation mode where I can actually debug segfaults and I don't run into problems with process-table sharing.


Portage 3.0.8 (python 3.7.9-final-0, default/linux/m68k/17.0, gcc-10.2.0, glibc-2.32-r2, 5.7.14-gentoo m68k)
=================================================================
                         System Settings
=================================================================
System uname: Linux-5.7.14-gentoo-m68k-with-gentoo-2.7
KiB Mem:     7987300 total,   2694208 free
KiB Swap:   20478972 total,  18019580 free
Timestamp of repository gentoo: Mon, 19 Oct 2020 10:05:18 +0000
sh bash 5.0_p18
ld GNU ld (Gentoo 2.35.1 p1) 2.35.1
app-shells/bash:          5.0_p18::gentoo
dev-lang/python:          3.7.9::gentoo
sys-apps/baselayout:      2.7::gentoo
sys-apps/openrc:          0.42.1::gentoo
sys-apps/sandbox:         2.20::gentoo
sys-devel/binutils:       2.35.1::gentoo
sys-devel/gcc:            10.2.0-r2::gentoo
sys-devel/gcc-config:     2.3.2::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.9::gentoo (virtual/os-headers)
sys-libs/glibc:           2.32-r2::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-metamanifest: yes
    sync-rsync-extra-opts: 
    sync-rsync-verify-jobs: 1
    sync-rsync-verify-max-age: 24

ACCEPT_KEYWORDS="m68k ~m68k"
ACCEPT_LICENSE="@FREE"
CBUILD="m68k-unknown-linux-gnu"
CFLAGS="-O2 -pipe -fomit-frame-pointer"
CHOST="m68k-unknown-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php7.4/ext-active/ /etc/php/cgi-php7.4/ext-active/ /etc/php/cli-php7.4/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe -fomit-frame-pointer"
DISTDIR="/var/cache/distfiles"
EMERGE_DEFAULT_OPTS="--usepkg --binpkg-respect-use=n"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync multilib-strict news nodoc noinfo noman parallel-fetch preserve-libs protect-owned qa-unresolved-soname-deps sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_NZ.UTF8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j1"
PKGDIR="/var/cache/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="acl berkdb big-endian bzip2 cli crypt dri fortran gdbm iconv ipv6 m68k ncurses nls nptl openmp pcre readline split-usr ssl tcpd unicode xattr zlib" ADA_TARGET="gnat_2018" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2 php7-3 php7-4" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_7" PYTHON_TARGETS="python2_7 python3_7" RUBY_TARGETS="ruby25 ruby26" USERLAND="GNU" VIDEO_CARDS="dummy fbdev v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

=================================================================
                        Package Settings
=================================================================

dev-python/cython-0.29.21-r1::gentoo was built with the following:
USE="-doc (-emacs) -test" PYTHON_TARGETS="python3_7 (-pypy3) -python3_6 -python3_8 -python3_9"
FEATURES="multilib-strict userpriv protect-owned parallel-fetch unmerge-logs qa-unresolved-soname-deps binpkg-logs strict binpkg-docompress nodoc noinfo sfperms merge-sync distlocks noman news fixlafiles preserve-libs buildpkg unknown-features-warn userfetch binpkg-dostrip unmerge-orphans assume-digests xattr ebuild-locks usersync config-protect-if-modified"


dev-python/numpy-1.19.2::gentoo was built with the following:
USE="-doc -lapack -test" PYTHON_TARGETS="python3_7 -python3_6 -python3_8 -python3_9"
CFLAGS="-O2 -pipe -fomit-frame-pointer -fno-strict-aliasing"
CXXFLAGS="-O2 -pipe -fomit-frame-pointer -fno-strict-aliasing"
FEATURES="multilib-strict userpriv protect-owned parallel-fetch unmerge-logs qa-unresolved-soname-deps binpkg-logs strict binpkg-docompress nodoc noinfo sfperms merge-sync distlocks noman news fixlafiles preserve-libs buildpkg unknown-features-warn userfetch binpkg-dostrip unmerge-orphans assume-digests xattr ebuild-locks usersync config-protect-if-modified"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -shared"

Relevant test code:

def test_extend():
    """
    >>> test_extend()
    """
    cdef array.array ca = array.array('i', [1, 2, 3])
    cdef array.array cb = array.array('i', [4, 5])
    cdef array.array cf = array.array('f', [1.0, 2.0, 3.0])
    array.extend(ca, cb)
    assert list(ca) == [1, 2, 3, 4, 5], list(ca)
    try:
        array.extend(ca, cf)
    except TypeError:
        pass
    else:
        assert False, 'extending incompatible array types did not raise'

def test_extend_buffer():
    """
    >>> test_extend_buffer()
    array('l', [15, 37, 389, 5077])
    """
    cdef array.array ca = array.array('l', [15, 37])
    cdef long[2] s
    s[0] = 389
    s[1] = 5077
    array.extend_buffer(ca, <char*> &s, 2)

    assert ca.data.as_ulongs[3] == 5077
    assert len(ca) == 4
    return ca
Comment 1 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2020-10-26 16:45:11 UTC
I've replicated this under QEmu-System now, segfaults in the same place.

Alas, no dmesg, still.

And everything I've tried to re-run *just* the failing test in a way I can expect to understand anything about what's going wrong just fails, and starts the whole (21 hour) test suite from scratch.

I'm probably just gonna mask USE="test" in package.use.mask on the m68k profile unless somebody can even tell me how to provide information that indicates *what* the problem is, (let alone, working out how to solve it)

Also worth mentioning there are other FAILS in the test log, just none so critical as to abort the entire test other than this.

Doctest: numpy_memoryview.__test__.test_coerce_to_numpy ... FAIL
Doctest: numpy_memoryview.test_coerce_to_numpy ... FAIL
Doctest: numpy_memoryview.__test__.test_coerce_to_numpy ... FAIL
Doctest: numpy_memoryview.test_coerce_to_numpy ... FAIL
Doctest: pyarray.test_extend ... FAIL
Comment 2 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2020-10-26 16:47:06 UTC
Though I also suspect something in the *harness* is panicking, which makes this even more fun.
Comment 3 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2020-10-27 21:59:42 UTC
Created attachment 668843 [details]
pyarray test .so and coredump

Ok, Manged to replicate the extend segfault in iso:

cd tests/run
cp pyarray.pyx pyarrayng.pyx
echo 'print(test_extend_buffer())' >> pyarrayng.pyx
cythonize -i pyarrayng.pyx
python -c "import pyarrayng"

^ this segfaults.

However, I don't have tools yet to poke into the actual failure -_-

Attached has a coredump and the .so blamed.
Comment 4 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2020-10-27 22:06:15 UTC
Now confirming the same segfault happens on all of:

qemu-m68k
qemu-system-m68k
aranym-mmu
Comment 5 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2020-10-28 01:45:31 UTC
Finally, after a lot of self abuse:

Program received signal SIGSEGV, Segmentation fault.
0x3f4a1c64 in memcpy () from /mnt/btrfs/vm/m68k/native-img-0/mount/lib/libc.so.6

#0  0x3f4a1c64 in memcpy () from /mnt/btrfs/vm/m68k/native-img-0/mount/lib/libc.so.6
#1  0x00000004 in ?? ()
#2  0x3ecb9dca in ?? ()
#3  0x00087dc2 in ?? ()
#4  0x3ee7a3a0 in ?? ()
#5  0x3ee40000 in _DYNAMIC ()
   from /mnt/btrfs/vm/m68k/native-img-0/mount/var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.cpython-37m-m68k-linux-gnu.so
#6  0x3ee25258 in memcpy (__len=16981, __src=<optimized out>, __dest=<optimized out>) at /usr/include/bits/string_fortified.h:34
#7  __pyx_f_7cpython_5array_extend_buffer (__pyx_v_n=2, __pyx_v_stuff=<optimized out>, __pyx_v_self=0x3ecbd0cc)
    at /var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.c:5465
#8  __pyx_pf_9pyarrayng_28test_extend_buffer (__pyx_self=<optimized out>)
    at /var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.c:4880
#9  __pyx_pw_9pyarrayng_29test_extend_buffer (__pyx_self=0x0, unused=0x0)
    at /var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.c:4805
#10 0x3ee29798 in __Pyx_PyObject_CallMethO (arg=0x0, func=0x3ee7c66c)
    at /var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.c:22517
#11 __Pyx_PyObject_CallNoArg (func=0x3ee7c66c) at /var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.c:23587
#12 __pyx_pymod_exec_pyarrayng (__pyx_pyinit_module=0x3ee76c34)
    at /var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.c:20609
#13 0x3f619670 in PyModule_ExecDef () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#14 0x3ee76c34 in ?? ()
#15 0x3ee41c28 in __pyx_string_tab ()
   from /mnt/btrfs/vm/m68k/native-img-0/mount/var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.cpython-37m-m68k-linux-gnu.so
#16 0x3ee76c34 in ?? ()
#17 0x3f7fd1d4 in __pointer_chk_guard () from /mnt/btrfs/vm/m68k/native-img-0/mount/lib/ld.so.1
#18 0x3f779000 in ?? () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#19 0x3f6a5138 in ?? () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#20 0x3ee76c34 in ?? ()
#21 0x3ee41c28 in __pyx_string_tab ()
   from /mnt/btrfs/vm/m68k/native-img-0/mount/var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.cpython-37m-m68k-linux-gnu.so
#22 0x00000008 in ?? ()
#23 0x3f7a0b2e in ?? () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#24 0x3f779000 in ?? () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#25 0x3f5e530a in _PyMethodDef_RawFastCallDict () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#26 0x3f5e5372 in _PyCFunction_FastCallDict () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#27 0x3f7a0b2e in ?? () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#28 0x3eed048c in ?? ()
#29 0x3eebc178 in ?? ()
#30 0x00000001 in ?? ()
#31 0x3ee65464 in ?? ()
#32 0x3ee65464 in ?? ()
#33 0x3eedc2fc in ?? ()
#34 0x3eedc2fc in ?? ()
#35 0x3f5e636a in PyCFunction_Call () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#36 0x3eedc2fc in ?? ()
#37 0x3eebc178 in ?? ()
#38 0x00000001 in ?? ()
#39 0x3ee65464 in ?? ()
#40 0x3ee65464 in ?? ()
#41 0x3eedc2fc in ?? ()
#42 0x3f7d8670 in Py_DebugFlag () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#43 0x3ee45d84 in ?? ()
#44 0x3ee45c44 in ?? ()
#45 0x3eec45d8 in ?? ()
#46 0x3f779000 in ?? () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#47 0x3fffdf84 in ?? ()
#48 0x3f5c6a5c in _PyEval_EvalFrameDefault () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#49 0x3f68ffea in PyEval_EvalFrameEx () from /mnt/btrfs/vm/m68k/native-img-0/mount/usr/lib/libpython3.7m.so.1.0
#50 0x3ee45c44 in ?? ()
#51 0x00000000 in ?? ()


Dump of assembler code for function memcpy:
   0x3f4a1bd4 <+0>:	moveml %d2-%d4/%a2/%a5,%sp@-
   0x3f4a1bd8 <+4>:	moveal %sp@(24),%a0
   0x3f4a1bdc <+8>:	movel %sp@(28),%d2
   0x3f4a1be0 <+12>:	movel %sp@(32),%d0
   0x3f4a1be4 <+16>:	moveal %a0,%a2
   0x3f4a1be6 <+18>:	moveal %d2,%a1
   0x3f4a1be8 <+20>:	moveq #15,%d1
   0x3f4a1bea <+22>:	cmpl %d0,%d1
   0x3f4a1bec <+24>:	bccw 0x3f4a1c7a <memcpy+166>
   0x3f4a1bf0 <+28>:	movel %a0,%d1
   0x3f4a1bf2 <+30>:	negl %d1
   0x3f4a1bf4 <+32>:	moveq #3,%d3
   0x3f4a1bf6 <+34>:	andl %d3,%d1
   0x3f4a1bf8 <+36>:	subl %d1,%d0
   0x3f4a1bfa <+38>:	tstl %d1
   0x3f4a1bfc <+40>:	beqw 0x3f4a1c96 <memcpy+194>
   0x3f4a1c00 <+44>:	movel %d1,%d3
   0x3f4a1c02 <+46>:	addl %a0,%d3
   0x3f4a1c04 <+48>:	moveb %a1@+,%a2@+
   0x3f4a1c06 <+50>:	cmpl %a2,%d3
   0x3f4a1c08 <+52>:	bnes 0x3f4a1c04 <memcpy+48>
   0x3f4a1c0a <+54>:	moveal %d2,%a1
   0x3f4a1c0c <+56>:	addal %d1,%a1
   0x3f4a1c0e <+58>:	movel %d0,%d4
   0x3f4a1c10 <+60>:	lsrl #5,%d4
   0x3f4a1c12 <+62>:	bfextu %d0,27,3,%d1
   0x3f4a1c16 <+66>:	moveq #8,%d2
   0x3f4a1c18 <+68>:	subl %d1,%d2
   0x3f4a1c1a <+70>:	lsll #2,%d2
   0x3f4a1c1c <+72>:	moveal %d3,%a2
   0x3f4a1c1e <+74>:	subal %d2,%a2
   0x3f4a1c20 <+76>:	subal %d2,%a1
   0x3f4a1c22 <+78>:	addl %d1,%d1
   0x3f4a1c24 <+80>:	movew %pc@(0x3f4a1c2c <memcpy+88>,%d1:l),%d1
   0x3f4a1c28 <+84>:	jmp %pc@(0x3f4a1c2c <memcpy+88>,%d1:w)
   0x3f4a1c2c <+88>:	.short 0x003e
   0x3f4a1c2e <+90>:	orib #50,0x2c
   0x3f4a1c34 <+96>:	orib #32,%fp@-
   0x3f4a1c38 <+100>:	orib #20,%a2@+
   0x3f4a1c3c <+104>:	movel %a1@,%a2@
   0x3f4a1c3e <+106>:	subql #1,%d4
   0x3f4a1c40 <+108>:	movel %a1@(4),%a2@(4)
   0x3f4a1c46 <+114>:	movel %a1@(8),%a2@(8)
   0x3f4a1c4c <+120>:	movel %a1@(12),%a2@(12)
   0x3f4a1c52 <+126>:	movel %a1@(16),%a2@(16)
   0x3f4a1c58 <+132>:	movel %a1@(20),%a2@(20)
   0x3f4a1c5e <+138>:	movel %a1@(24),%a2@(24)
=> 0x3f4a1c64 <+144>:	movel %a1@(28),%a2@(28)
Comment 6 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2020-10-28 01:48:41 UTC
And here's the generated C code for the failure point:

  5419	static CYTHON_INLINE int __pyx_f_7cpython_5array_extend_buffer(arrayobject *__pyx_v_self, char *__pyx_v_stuff, Py_ssize_t __pyx_v_n) {
  5420	  Py_ssize_t __pyx_v_itemsize;
  5421	  Py_ssize_t __pyx_v_origsize;
  5422	  int __pyx_r;
  5423	  __Pyx_RefNannyDeclarations
  5424	  int __pyx_t_1;
  5425	  int __pyx_lineno = 0;
  5426	  const char *__pyx_filename = NULL;
  5427	  int __pyx_clineno = 0;
  5428	  __Pyx_RefNannySetupContext("extend_buffer", 0);
  5429	
  5430	  /* "array.pxd":149
  5431	 *     (e.g. of same array type)
  5432	 *     n: number of elements (not number of bytes!) """
  5433	 *     cdef Py_ssize_t itemsize = self.ob_descr.itemsize             # <<<<<<<<<<<<<<
  5434	 *     cdef Py_ssize_t origsize = Py_SIZE(self)
  5435	 *     resize_smart(self, origsize + n)
  5436	 */
  5437	  __pyx_t_1 = __pyx_v_self->ob_descr->itemsize;
  5438	  __pyx_v_itemsize = __pyx_t_1;
  5439	
  5440	  /* "array.pxd":150
  5441	 *     n: number of elements (not number of bytes!) """
  5442	 *     cdef Py_ssize_t itemsize = self.ob_descr.itemsize
  5443	 *     cdef Py_ssize_t origsize = Py_SIZE(self)             # <<<<<<<<<<<<<<
  5444	 *     resize_smart(self, origsize + n)
  5445	 *     memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize)
  5446	 */
  5447	  __pyx_v_origsize = Py_SIZE(((PyObject *)__pyx_v_self));
  5448	
  5449	  /* "array.pxd":151
  5450	 *     cdef Py_ssize_t itemsize = self.ob_descr.itemsize
  5451	 *     cdef Py_ssize_t origsize = Py_SIZE(self)
  5452	 *     resize_smart(self, origsize + n)             # <<<<<<<<<<<<<<
  5453	 *     memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize)
  5454	 *     return 0
  5455	 */
  5456	  __pyx_t_1 = resize_smart(__pyx_v_self, (__pyx_v_origsize + __pyx_v_n)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 151, __pyx_L1_error)
  5457	
  5458	  /* "array.pxd":152
  5459	 *     cdef Py_ssize_t origsize = Py_SIZE(self)
  5460	 *     resize_smart(self, origsize + n)
  5461	 *     memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize)             # <<<<<<<<<<<<<<
  5462	 *     return 0
  5463	 * 
  5464	 */
  5465	  (void)(memcpy((__pyx_v_self->data.as_chars + (__pyx_v_origsize * __pyx_v_itemsize)), __pyx_v_stuff, (__pyx_v_n * __pyx_v_itemsize)));
  5466	
  5467	  /* "array.pxd":153
  5468	 *     resize_smart(self, origsize + n)
  5469	 *     memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize)
  5470	 *     return 0             # <<<<<<<<<<<<<<
  5471	 * 
  5472	 * cdef inline int extend(array self, array other) except -1:
  5473	 */
  5474	  __pyx_r = 0;
  5475	  goto __pyx_L0;
  5476	
  5477	  /* "array.pxd":145
  5478	 *     return op
  5479	 * 
  5480	 * cdef inline int extend_buffer(array self, char* stuff, Py_ssize_t n) except -1:             # <<<<<<<<<<<<<<
  5481	 *     """ efficient appending of new stuff of same type
  5482	 *     (e.g. of same array type)
  5483	 */
  5484	
  5485	  /* function exit code */
  5486	  __pyx_L1_error:;
  5487	  __Pyx_AddTraceback("cpython.array.extend_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  5488	  __pyx_r = -1;
  5489	  __pyx_L0:;
  5490	  __Pyx_RefNannyFinishContext();
  5491	  return __pyx_r;
  5492	}
Comment 7 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2020-10-29 04:38:20 UTC
After rebuilding glibc and python with -O1 -ggdb3 and nostrip

this is the bottom of my stack:

#0  0x3f4a1c4c in __GI_memcpy (dstpp=0x3ecb9dca, srcpp=0x3fffdc50, len=556480) at memcpy.c:52
        __nwords = 139120
        __nblocks = <optimized out>
        dstp = 1053544812
        srcp = 1073745906
#1  0x3ee25258 in memcpy (__len=556482, __src=<optimized out>, __dest=<optimized out>) at /usr/include/bits/string_fortified.h:34
No locals.
#2  __pyx_f_7cpython_5array_extend_buffer (__pyx_v_n=2, __pyx_v_stuff=<optimized out>, __pyx_v_self=0x3ee79460)
    at /var/tmp/portage/dev-python/cython-0.29.21-r1/work/cython-0.29.21/tests/run/pyarrayng.c:5465
        __pyx_v_itemsize = <optimized out>
        __pyx_v_origsize = 2
        __pyx_r = <optimized out>
        __pyx_t_1 = 0
        __pyx_lineno = 0
        __pyx_filename = 0x0
        __pyx_clineno = 0
        __pyx_v_itemsize = <optimized out>
        __pyx_v_origsize = <optimized out>
        __pyx_r = <optimized out>
        __pyx_t_1 = <optimized out>
        __pyx_lineno = <optimized out>
        __pyx_filename = <optimized out>
        __pyx_clineno = <optimized out>

And asm context now from #0

   0x3f4a1c24 <+80>:	movew %pc@(0x3f4a1c2c <__GI_memcpy+88>,%d1:l),%d1
   0x3f4a1c28 <+84>:	jmp %pc@(0x3f4a1c2c <__GI_memcpy+88>,%d1:w)
   0x3f4a1c2c <+88>:	.short 0x003e
   0x3f4a1c2e <+90>:	orib #50,0x2c
   0x3f4a1c34 <+96>:	orib #32,%fp@-
   0x3f4a1c38 <+100>:	orib #20,%a2@+
   0x3f4a1c3c <+104>:	movel %a1@,%a2@
   0x3f4a1c3e <+106>:	subql #1,%d4
   0x3f4a1c40 <+108>:	movel %a1@(4),%a2@(4)
   0x3f4a1c46 <+114>:	movel %a1@(8),%a2@(8)
=> 0x3f4a1c4c <+120>:	movel %a1@(12),%a2@(12)
   0x3f4a1c52 <+126>:	movel %a1@(16),%a2@(16)
   0x3f4a1c58 <+132>:	movel %a1@(20),%a2@(20)
   0x3f4a1c5e <+138>:	movel %a1@(24),%a2@(24)
   0x3f4a1c64 <+144>:	movel %a1@(28),%a2@(28)

And poking some of those variables in memcpy:

x 0x3ecb9dca
0x3ecb9dca:	0x00000185
x 0x3fffdc50
0x3fffdc50:	0x00000185

Stack level 0, frame at 0x3fffdc28:
 pc = 0x3f4a1c4c in __GI_memcpy (memcpy.c:52); saved pc = 0x3ee25258
 called by frame at 0x3fffdc64
 source language c.
 Arglist at 0x3fffdc0c, args: dstpp=0x3ecb9dca, srcpp=0x3fffdc50, len=556480
 Locals at 0x3fffdc0c, Previous frame's sp is 0x3fffdc28
 Saved registers:
  d2 at 0x3fffdc10, d3 at 0x3fffdc14, d4 at 0x3fffdc18, a2 at 0x3fffdc1c, a5 at 0x3fffdc20, pc at 0x3fffdc24

(gdb) info all-registers
d0             0x87dc0             556480
d1             0x3e                62
d2             0x20                32
d3             0x3ecb9dcc          1053531596
d4             0x4250              16976
d5             0x3eed048c          1055720588
d6             0x3eebc238          1055638072
d7             0x3eebc22c          1055638060
a0             0x3ecb9dca          0x3ecb9dca
a1             0x40000ff2          0x40000ff2
a2             0x3ecbd16c          0x3ecbd16c
a3             0x7                 0x7
a4             0x3ee7954c          0x3ee7954c
a5             0x3ee40000          0x3ee40000
fp             0x3fffdc5c          0x3fffdc5c
sp             0x3fffdc10          0x3fffdc10
ps             0x4                 4
pc             0x3f4a1c4c          0x3f4a1c4c <__GI_memcpy+120>
fp0            3                   (raw 0x40000000c000000000000000)
fp1            1602806335          (raw 0x401d0000bf11c47e00000000)
fp2            nan(0xffffffffffffffff) (raw 0x7fff0000ffffffffffffffff)
fp3            nan(0xffffffffffffffff) (raw 0x7fff0000ffffffffffffffff)
fp4            nan(0xffffffffffffffff) (raw 0x7fff0000ffffffffffffffff)
fp5            nan(0xffffffffffffffff) (raw 0x7fff0000ffffffffffffffff)
fp6            nan(0xffffffffffffffff) (raw 0x7fff0000ffffffffffffffff)
fp7            nan(0xffffffffffffffff) (raw 0x7fff0000ffffffffffffffff)
fpcontrol      0x0                 0
fpstatus       0x0                 0
fpiaddr        0x0                 0x0
Comment 8 James Le Cuirot gentoo-dev 2021-08-21 22:20:44 UTC
Although I have seen various Python-related test failures on m68k, cryptography wasn't one of them. There was a bad bug in glibc that affected m68k for a while. I did tell Kent about it but I think that was after he filed this bug. It should all be fine now so closing.