python testrunner/pypyjit_tests.py
in dir /build_dir/pypy-c-jit-linux-x86-64/build (timeout 4000 secs)
watching logfiles {'pytestLog': 'pypyjit_new.log'}
argv: ['python', 'testrunner/pypyjit_tests.py']
environment:
AUDITWHEEL_ARCH=x86_64
AUDITWHEEL_PLAT=manylinux2014_x86_64
AUDITWHEEL_POLICY=manylinux2014
DEVTOOLSET_ROOTPATH=/opt/rh/devtoolset-10/root
HOME=/home/buildslave
HOSTNAME=a58a84039819
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LD_LIBRARY_PATH=/usr/local/lib:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/usr/local/lib64
LOGNAME=buildslave
PATH=/python27_virt/bin:/opt/rh/devtoolset-10/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig
PWD=/build_dir/pypy-c-jit-linux-x86-64/build
PYPY_LOCALBASE=/usr/local
PYPY_MAKE_PORTABLE=1
PYPY_USESSION_DIR=/tmp/pytest
SHELL=/bin/bash
SHLVL=2
SSL_CERT_FILE=/opt/_internal/certs.pem
TERM=xterm
TMPDIR=/tmp/pytest
USER=buildslave
USE_CURL=1
_=/python27_virt/bin/buildslave
using PTY: False
============================= test session starts ==============================
platform linux2 -- Python 2.7.18, pytest-2.9.2, py-1.4.29, pluggy-0.3.1
hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('/build_dir/pypy-c-jit-linux-x86-64/build/.hypothesis/examples')
pytest-2.9.2 from /build_dir/pypy-c-jit-linux-x86-64/build/pytest.pyc
rootdir: /build_dir/pypy-c-jit-linux-x86-64/build, inifile: pytest.ini
plugins: hypothesis-4.42.0
collected 1194 items / 1 skipped
pypy/module/pypyjit/test_pypy_c/test_00_model.py ........................
pypy/module/pypyjit/test_pypy_c/test_alloc.py ...................................................
pypy/module/pypyjit/test_pypy_c/test_array.py ........
pypy/module/pypyjit/test_pypy_c/test_boolrewrite.py ......................................................................................................................................................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_buffers.py ..
pypy/module/pypyjit/test_pypy_c/test_bug.py .
pypy/module/pypyjit/test_pypy_c/test_call.py .........................s.
pypy/module/pypyjit/test_pypy_c/test_capture_locals.py .
pypy/module/pypyjit/test_pypy_c/test_cprofile.py .
pypy/module/pypyjit/test_pypy_c/test_exception.py .....
pypy/module/pypyjit/test_pypy_c/test_ffi.py s..s...F..
pypy/module/pypyjit/test_pypy_c/test_generators.py ...
pypy/module/pypyjit/test_pypy_c/test_getframe.py ..
pypy/module/pypyjit/test_pypy_c/test_globals.py .
pypy/module/pypyjit/test_pypy_c/test_import.py ....
pypy/module/pypyjit/test_pypy_c/test_instance.py ...........F...
pypy/module/pypyjit/test_pypy_c/test_intbound.py ...................................................................................................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_itertools.py ..
pypy/module/pypyjit/test_pypy_c/test_jitlogparser.py .
pypy/module/pypyjit/test_pypy_c/test_math.py ..s..
pypy/module/pypyjit/test_pypy_c/test_micronumpy.py ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
pypy/module/pypyjit/test_pypy_c/test_min_max.py ...
pypy/module/pypyjit/test_pypy_c/test_misc.py .......................
pypy/module/pypyjit/test_pypy_c/test_shift.py ...........................................................................................................................................................................................................................
pypy/module/pypyjit/test_pypy_c/test_string.py ......x............
pypy/module/pypyjit/test_pypy_c/test_struct.py ......
pypy/module/pypyjit/test_pypy_c/test_thread.py ...
pypy/module/pypyjit/test_pypy_c/test_weakref.py .
=================================== FAILURES ===================================
_______________ Test__ffi.test_cffi_call_guard_not_forced_fails ________________
self = <pypy.module.pypyjit.test_pypy_c.test_ffi.Test__ffi object at 0x7f946f5b6590>
def test_cffi_call_guard_not_forced_fails(self):
# this is the test_pypy_c equivalent of
# rpython/jit/metainterp/test/test_fficall::test_guard_not_forced_fails
#
# it requires cffi to be installed for pypy in order to run
def main():
import sys
try:
import cffi
except ImportError:
sys.stderr.write('SKIP: cannot import cffi\n')
return 0
ffi = cffi.FFI()
ffi.cdef("""
typedef void (*functype)(int);
int foo(int n, functype func);
""")
lib = ffi.verify("""
#include <signal.h>
typedef void (*functype)(int);
int foo(int n, functype func) {
if (n >= 2000) {
func(n);
}
return n*2;
}
""")
@ffi.callback("functype")
def mycallback(n):
if n < 5000:
return
# make sure that guard_not_forced fails
d = {}
f = sys._getframe()
while f:
d.update(f.f_locals)
f = f.f_back
n = 0
while n < 10000:
res = lib.foo(n, mycallback) # ID: cfficall
# this is the real point of the test: before the
# refactor-call_release_gil branch, the assert failed when
# res == 5000
assert res == n*2
n += 1
return n
log = self.run(main, [], import_site=True,
> discard_stdout_before_last_line=True) # <- for Win32
pypy/module/pypyjit/test_pypy_c/test_ffi.py:320:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pypy.module.pypyjit.test_pypy_c.test_ffi.Test__ffi object at 0x7f946f5b6590>
func_or_src = <function main at 0x7f946ede8050>, args = [], import_site = True
discard_stdout_before_last_line = True
jitopts = {'disable_unrolling': 9999, 'threshold': 200}
src = <py._code.source.Source object at 0x7f946f5b6750>, funcname = 'main'
arglist = ''
f = <closed file '/tmp/pytest/usession-py3.12-931/test-pypy-jit/test_cffi_call_guard_not_forced_fails.py', mode 'w' at 0x7f946f4aded0>
logfile = local('/tmp/pytest/usession-py3.12-931/test-pypy-jit/test_cffi_call_guard_not_forced_fails.log')
cmdline = ['/build_dir/pypy-c-jit-linux-x86-64/build/pypy/goal/pypy3.12-c', '--jit', 'threshold=200,disable_unrolling=9999', '/tmp/pytest/usession-py3.12-931/test-pypy-jit/test_cffi_call_guard_not_forced_fails.py']
key = 'disable_unrolling'
def run(self, func_or_src, args=[], import_site=False,
discard_stdout_before_last_line=False, **jitopts):
jitopts.setdefault('threshold', 200)
jitopts.setdefault('disable_unrolling', 9999)
if self.pypy_c is None:
py.test.skip("run with --pypy=PATH")
src = py.code.Source(func_or_src)
if isinstance(func_or_src, types.FunctionType):
funcname = func_or_src.func_name
else:
funcname = 'main'
# write the snippet
arglist = ', '.join(map(repr, args))
with self.filepath.open("w") as f:
# we don't want to see the small bridges created
# by the checkinterval reaching the limit
f.write("import sys\n")
f.write("sys.setcheckinterval(10000000)\n")
f.write(str(src) + "\n")
f.write("print(%s(%s))\n" % (funcname, arglist))
#
# run a child pypy-c with logging enabled
logfile = self.filepath.new(ext='.log')
#
cmdline = [self.pypy_c]
if not import_site:
cmdline.append('-S')
if jitopts:
jitcmdline = ['%s=%s' % (key, value)
for key, value in jitopts.items()]
cmdline += ['--jit', ','.join(jitcmdline)]
cmdline.append(str(self.filepath))
#
env = os.environ.copy()
# TODO old logging system
env['PYPYLOG'] = self.log_string + ':' + str(logfile)
jitlogfile = str(logfile) + '.jlog'
env['JITLOG'] = str(jitlogfile)
pipe = subprocess.Popen(cmdline,
env=env,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = pipe.communicate()
if pipe.wait() < 0:
raise IOError("subprocess was killed by signal %d" % (
pipe.returncode,))
if stderr.startswith('SKIP:'):
py.test.skip(stderr)
#if stderr.startswith('debug_alloc.h:'): # lldebug builds
# stderr = ''
#assert not stderr
if not stdout:
raise Exception("no stdout produced; stderr='''\n%s'''"
> % (stderr,))
E Exception: no stdout produced; stderr='''
E Exception: This CFFI feature requires setuptools on Python >= 3.12. The setuptools module is missing or non-functional.
E '''
pypy/module/pypyjit/test_pypy_c/test_00_model.py:96: Exception
__________________ TestInstance.test_namedtuple_construction ___________________
self = <pypy.module.pypyjit.test_pypy_c.test_instance.TestInstance object at 0x7f946f6ee3d0>
def test_namedtuple_construction(self):
def main():
from collections import namedtuple
A = namedtuple("A", "x y")
res = 0
i = 0
while i < 2000:
res += A(i, 0).x
i += 1
log = self.run(main, [])
loop, = log.loops_by_filename(self.filepath)
assert loop.match("""
i7 = int_lt(i5, 2000)
guard_true(i7, descr=...)
guard_not_invalidated(descr=...)
p1 = force_token()
p2 = force_token()
i20 = int_add_ovf(i19, i5)
guard_no_overflow(descr=...)
i9 = int_add(i5, 1)
--TICK--
jump(..., descr=...)
> """)
pypy/module/pypyjit/test_pypy_c/test_instance.py:401:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pypy/module/pypyjit/test_pypy_c/model.py:177: in match
return matcher.match(expected_src, **kwds)
pypy/module/pypyjit/test_pypy_c/model.py:524: in match
self.match_loop(expected_ops, ignore_ops)
pypy/module/pypyjit/test_pypy_c/model.py:500: in match_loop
self.match_op(op, exp_op)
pypy/module/pypyjit/test_pypy_c/model.py:409: in match_op
self._assert(op.name == exp_opname, "operation mismatch")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pypy.module.pypyjit.test_pypy_c.model.OpMatcher object at 0x7f946eff8f50>
cond = False, message = 'operation mismatch'
def _assert(self, cond, message):
if not cond:
> raise InvalidMatch(message, frame=sys._getframe(1))
E InvalidMatch: operation mismatch
pypy/module/pypyjit/test_pypy_c/model.py:402: InvalidMatch
----------------------------- Captured stdout call -----------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Loops don't match
=================
loop id = None
('operation mismatch',)
<could not determine information>
Ignore ops: []
Got:
i77 = int_lt(i71, 2000)
guard_true(i77, descr=<Guard0x7f3974534200>)
guard_not_invalidated(descr=<Guard0x7f3974532b48>)
p78 = force_token()
===== HERE =====
p81 = new_with_vtable(descr=<SizeDescr 32>)
setfield_gc(p81, ConstPtr(ptr82), descr=<FieldP pypy.objspace.std.unicodeobject.W_UnicodeObject.inst__utf8 24 pure>)
i86 = call_i(ConstClass(ll_call_lookup_function_trampoline__v2295___simple_call__function_), p46, p81, 7009688974387842087, 0, descr=<Calli 8 rrii EF=5 OS=4>)
setfield_gc(p81, ConstPtr(null), descr=<FieldP pypy.objspace.std.unicodeobject.W_UnicodeObject.inst__index_storage 8>)
setfield_gc(p81, 10, descr=<FieldS pypy.objspace.std.unicodeobject.W_UnicodeObject.inst__length 16 pure>)
guard_no_exception(descr=<Guard0x7f3974534160>)
i90 = int_lt(i86, 0)
guard_false(i90, descr=<Guard0x7f3974532ad8>)
p91 = getinteriorfield_gc_r(p57, i86, descr=<InteriorFieldDescr <FieldP odictentry.value 8>>)
guard_value(p91, ConstPtr(ptr92), descr=<Guard0x7f39745341b0>)
p94 = force_token()
i98 = int_add_ovf(i69, i71)
guard_no_overflow(descr=<Guard0x7f3974532aa0>)
i100 = int_add(i71, 1)
i102 = getfield_raw_i(139884835121600, descr=<FieldS pypysig_long_struct_inner.c_value 0>)
i104 = int_lt(i102, 0)
guard_false(i104, descr=<Guard0x7f3974532a68>)
jump(p0, p1, p8, i98, i100, p33, p46, p34, p57, descr=TargetToken(139884742439456))
Expected:
i7 = int_lt(i5, 2000)
guard_true(i7, descr=...)
guard_not_invalidated(descr=...)
p1 = force_token()
p2 = force_token()
i20 = int_add_ovf(i19, i5)
guard_no_overflow(descr=...)
i9 = int_add(i5, 1)
guard_not_invalidated?
ticker0 = getfield_raw_i(#, descr=<FieldS pypysig_long_struct_inner.c_value .*>)
ticker_cond0 = int_lt(ticker0, 0)
guard_false(ticker_cond0, descr=...)
jump(..., descr=...)
=========================== short test summary info ============================
FAIL pypy/module/pypyjit/test_pypy_c/test_ffi.py::Test__ffi::()::test_cffi_call_guard_not_forced_fails
FAIL pypy/module/pypyjit/test_pypy_c/test_instance.py::TestInstance::()::test_namedtuple_construction
======= 2 failed, 1031 passed, 161 skipped, 1 xfailed in 135.11 seconds ========
program finished with exit code 1
elapsedTime=135.599501