Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 704278

Summary: dev-python/cython-0.29.14-r1 fails test_copy test with pypy
Product: Gentoo Linux Reporter: Paolo Pedroni <paolo.pedroni>
Component: Current packagesAssignee: Python Gentoo Team <python>
Status: UNCONFIRMED ---    
Severity: normal Keywords: TESTFAILURE
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: cython-0.29.14-r1:20191230-141343.log.gz

Description Paolo Pedroni 2019-12-30 14:19:15 UTC
Created attachment 601842 [details]
cython-0.29.14-r1:20191230-141343.log.gz

test_copy (test_coroutines_pep492.CoroutineTest) ... FAIL
test_coro_wrapper_send_stop_iterator (test_coroutines_pep492.CoroutineTest) ... ok
test_coro_wrapper_send_tuple (test_coroutines_pep492.CoroutineTest) ... ok
test_corotype_1 (test_coroutines_pep492.CoroutineTest) ... ERROR
test_cr_await (test_coroutines_pep492.CoroutineTest) ... ok
test_fatal_coro_warning (test_coroutines_pep492.CoroutineTest) ... /usr/lib/pypy2.7/lib-python/2.7/warnings.py:354: RuntimeWarning: coroutine was never awaited
  self._record = record
/usr/lib/pypy2.7/lib-python/2.7/warnings.py:354: RuntimeWarning: coroutine was never awaited
  self._record = record
/usr/lib/pypy2.7/lib-python/2.7/warnings.py:354: RuntimeWarning: coroutine was never awaited
  self._record = record
RPython traceback:
  File "pypy_module_cpyext.c", line 19701, in wrapper_second_level__star_3_3
  File "pypy_module_cpyext_1.c", line 46802, in PyErr_WarnEx
  File "pypy_interpreter.c", line 40363, in BuiltinCode3_fastcall_3
  File "implement_9.c", line 14641, in fastfunc_warn_3
  File "pypy_module__warnings.c", line 3939, in do_warn_explicit
*** Invalid usage of a dying CPython object ***

cpyext, the emulation layer, detected that while it is calling
an object's tp_dealloc, the C code calls back a function that
tries to recreate the PyPy version of the object.  Usually it
means that tp_dealloc calls some general PyXxx() API.  It is
a dangerous and potentially buggy thing to do: even in CPython
the PyXxx() function could, in theory, cause a reference to the
object to be taken and stored somewhere, for an amount of time
exceeding tp_dealloc itself.  Afterwards, the object will be
freed, making that reference point to garbage.
>>> PyPy could contain some workaround to still work if
you are lucky, but it is not done so far; better fix the bug in
the CPython extension.
>>> This object is of type 'coroutine'
/var/tmp/portage/dev-python/cython-0.29.14-r1/temp/environment: line 3049:    68 Aborted                 (core dumped) "${PYTHON}" runtests.py -vv --work-dir "${BUILD_DIR}"/tests

Since test are very long I haven't tried with other implementations, yet.

# emerge --info =dev-python/cython-0.29.14-r1
Portage 2.3.79 (python 3.7.6-final-0, default/linux/amd64/17.1/desktop/plasma/systemd, gcc-9.2.0, glibc-2.29-r7, 5.3.16-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-5.3.16-gentoo-x86_64-Intel-R-_Core-TM-_i5-8400_CPU_@_2.80GHz-with-gentoo-2.6
KiB Mem:    16129860 total,   9800532 free
KiB Swap:   16777212 total,  16257276 free
Timestamp of repository gentoo: Sun, 29 Dec 2019 10:00:01 +0000
Head commit of repository gentoo: 1d3bf15d0e00d002198c4e6460330b2343e2ad76
sh dash 0.5.9.1-r3
ld GNU gold (Gentoo 2.32 p2 2.32.0) 1.16
ccache version 3.7.4 [disabled]
app-shells/bash:          4.4_p23-r1::gentoo
dev-java/java-config:     2.2.0-r4::gentoo
dev-lang/perl:            5.30.1::gentoo
dev-lang/python:          2.7.17::gentoo, 3.7.6::gentoo
dev-util/ccache:          3.7.4::gentoo
dev-util/cmake:           3.14.6::gentoo
sys-apps/baselayout:      2.6-r1::gentoo
sys-apps/sandbox:         2.13::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r4::gentoo
sys-devel/automake:       1.16.1-r1::gentoo
sys-devel/binutils:       2.32-r1::gentoo
sys-devel/gcc:            9.2.0-r2::gentoo
sys-devel/gcc-config:     2.1::gentoo
sys-devel/libtool:        2.4.6-r3::gentoo
sys-devel/make:           4.2.1-r4::gentoo
sys-kernel/linux-headers: 4.19::gentoo (virtual/os-headers)
sys-libs/glibc:           2.29-r7::gentoo
Repositories:

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

x-portage
    location: /usr/local/portage
    masters: gentoo
    priority: 0

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -frecord-gcc-switches -march=skylake -mabm -flto=6"
CHOST="x86_64-pc-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/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -pipe -frecord-gcc-switches -march=skylake -mabm -flto=6"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--keep-going y --with-bdeps y"
ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN 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 -frecord-gcc-switches -march=skylake -mabm -flto=6"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs cgroup compress-build-logs config-protect-if-modified distlocks ebuild-locks ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms sign split-elog split-log strict strict-keepdir test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe -frecord-gcc-switches -march=skylake -mabm -flto=6"
GENTOO_MIRRORS="http://mirrors.evowise.com/gentoo/ https://mirrors.evowise.com/gentoo/ http://mirror.eu.oneandone.net/linux/distributions/gentoo/gentoo/ http://mirror.netcologne.de/gentoo/"
LANG="it_IT.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu -Wl,--sort-common -flto=6"
LINGUAS="it it_IT"
MAKEOPTS="-j7 -l6"
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="X a52 aac aalib acl acpi activities adns alsa amd64 ao audiofile bash-completion bluetooth branding bzip2 cairo caps cdda cddb cdparanoia cdr cli crypt css cups curl cxx dbus declarative dga djvu dri dts dvd dvdr emboss encode exif expat fbcon ffmpeg fftw flac fontconfig foomaticdb fortran ftp gd gdbm geoip gif gimp gmp gnutls gphoto2 gpm graphviz gtk handbook iconv icu idn imagemagick imlib ipv6 java javascript jbig jemalloc jpeg jpeg2k kde kipi kwallet lame lcms libass libnotify libsamplerate libtirpc lm_sensors lua lzma lzo mad mmap mng mp3 mp4 mpeg mplayer multilib musicbrainz ncurses nls nptl nsplugin offensive ogg openal opengl openmp pam pango pcre pdf phonon plasma png policykit postscript ppds pulseaudio qml qt5 rdesktop readline recode samba sctp sdl seccomp sndfile sockets speex spell split-usr sqlite ssl startup-notification subversion svg symlink syslog systemd sysvipc taglib test theora threads tidy tiff truetype udev udisks unicode upower usb vaapi vala vcd vim-syntax vnc vorbis wavpack wayland widgets win32codecs wmf wxwidgets x264 xattr xcb xcomposite xine xml xpm xscreensaver xv xvid yahoo zlib zstd" ABI_X86="64" ADA_TARGET="gnat_2018" ALSA_CARDS="hda-intel virmidi" 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" CAMERAS="kodak ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" CURL_SSL="gnutls" 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" L10N="it en" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="nlpsolver wiki-publisher" NETBEANS_MODULES="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_7" PYTHON_TARGETS="python2_7 python3_7 pypy pypy3" RUBY_TARGETS="ruby24" USERLAND="GNU" VIDEO_CARDS="intel i965" 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, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

# emerge -1pqv =dev-python/cython-0.29.14-r1
[ebuild     U ] dev-python/cython-0.29.14-r1 [0.29.4] USE="test -doc -emacs" PYTHON_TARGETS="pypy%* pypy3%* python2_7 python3_7 -python3_5 -python3_6 -python3_8%"
Comment 1 Paolo Pedroni 2019-12-30 15:02:25 UTC
pypy3 tests fail with: 

/usr/bin/pypy3 main.py
Running Python coroutine ...
awaiting:
- this one is from Cython
- and this one is from Python
sleeping:

Traceback (most recent call last):
  File "main.py", line 11, in <module>
    loop.run_until_complete(main())
  File "/usr/lib/pypy3.6/lib-python/3/asyncio/base_events.py", line 484, in run_until_complete
    return future.result()
  File "/usr/lib/pypy3.6/lib-python/3/asyncio/futures.py", line 243, in result
    raise self._exception
  File "/usr/lib/pypy3.6/lib-python/3/asyncio/tasks.py", line 180, in _step
    result = coro.send(None)
  File "main.py", line 7, in main
    await cy_test.say()
  File "cy_test.pyx", line 9, in say
    await cb()
  File "cy_test.pyx", line 16, in cb
    await asyncio.sleep(0.5)
TypeError: object generator can't be used in 'await' expression


FAIL
runTest (__main__.CythonRunTestCase)
compiling (c) and running py35_pep492_interop ... 
=== C/C++ compiler error output: ===
py35_pep492_interop.c:487: warning: "PyObject_Unicode" redefined
  487 |   #define PyObject_Unicode             PyObject_Str
      | 
In file included from /usr/lib/pypy3.6/include/Python.h:143,
                 from py35_pep492_interop.c:4:
/usr/lib/pypy3.6/include/pypy_decl.h:677: note: this is the location of the previous definition
  677 | #define PyObject_Unicode PyPyObject_Unicode
      |
====================================
await_cyobject (py35_pep492_interop)
Doctest: py35_pep492_interop.await_cyobject ... FAIL
await_pyobject (py35_pep492_interop)
Doctest: py35_pep492_interop.await_pyobject ... FAIL
yield_from_cyobject (py35_pep492_interop)
Doctest: py35_pep492_interop.yield_from_cyobject ... FAIL
cpyext: missing slot wrapper wrap_del
RPython traceback:
  File "pypy_interpreter.c", line 37198, in BuiltinCode_funcrun_obj
  File "pypy_module_cpyext_6.c", line 11846, in wrap_del_call
Fatal RPython error: NotImplementedError
/var/tmp/portage/dev-python/cython-0.29.14-r1/temp/environment: line 3049:    68 Aborted                 (core dumped) "${PYTHON}" runtests.py -vv --work-dir "${BUILD_DIR}"/tests
Comment 2 Paolo Pedroni 2019-12-30 15:02:25 UTC
pypy3 tests fail with: 

/usr/bin/pypy3 main.py
Running Python coroutine ...
awaiting:
- this one is from Cython
- and this one is from Python
sleeping:

Traceback (most recent call last):
  File "main.py", line 11, in <module>
    loop.run_until_complete(main())
  File "/usr/lib/pypy3.6/lib-python/3/asyncio/base_events.py", line 484, in run_until_complete
    return future.result()
  File "/usr/lib/pypy3.6/lib-python/3/asyncio/futures.py", line 243, in result
    raise self._exception
  File "/usr/lib/pypy3.6/lib-python/3/asyncio/tasks.py", line 180, in _step
    result = coro.send(None)
  File "main.py", line 7, in main
    await cy_test.say()
  File "cy_test.pyx", line 9, in say
    await cb()
  File "cy_test.pyx", line 16, in cb
    await asyncio.sleep(0.5)
TypeError: object generator can't be used in 'await' expression


FAIL
runTest (__main__.CythonRunTestCase)
compiling (c) and running py35_pep492_interop ... 
=== C/C++ compiler error output: ===
py35_pep492_interop.c:487: warning: "PyObject_Unicode" redefined
  487 |   #define PyObject_Unicode             PyObject_Str
      | 
In file included from /usr/lib/pypy3.6/include/Python.h:143,
                 from py35_pep492_interop.c:4:
/usr/lib/pypy3.6/include/pypy_decl.h:677: note: this is the location of the previous definition
  677 | #define PyObject_Unicode PyPyObject_Unicode
      |
====================================
await_cyobject (py35_pep492_interop)
Doctest: py35_pep492_interop.await_cyobject ... FAIL
await_pyobject (py35_pep492_interop)
Doctest: py35_pep492_interop.await_pyobject ... FAIL
yield_from_cyobject (py35_pep492_interop)
Doctest: py35_pep492_interop.yield_from_cyobject ... FAIL
cpyext: missing slot wrapper wrap_del
RPython traceback:
  File "pypy_interpreter.c", line 37198, in BuiltinCode_funcrun_obj
  File "pypy_module_cpyext_6.c", line 11846, in wrap_del_call
Fatal RPython error: NotImplementedError
/var/tmp/portage/dev-python/cython-0.29.14-r1/temp/environment: line 3049:    68 Aborted                 (core dumped) "${PYTHON}" runtests.py -vv --work-dir "${BUILD_DIR}"/tests