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 0x7feba5e63e90> 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 0x7feba5e63e90> func_or_src = <function main at 0x7feba5dd24d0>, args = [], import_site = True discard_stdout_before_last_line = True jitopts = {'disable_unrolling': 9999, 'threshold': 200} src = <py._code.source.Source object at 0x7feba58fa4d0>, funcname = 'main' arglist = '' f = <closed file '/tmp/pytest/usession-py3.12-1423/test-pypy-jit/test_cffi_call_guard_not_forced_fails.py', mode 'w' at 0x7feba5f2c150> logfile = local('/tmp/pytest/usession-py3.12-1423/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-1423/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 0x7feba5a66c50> 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 0x7feba58b0e50> 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=<Guard0x7f5e1f3bc340>) guard_not_invalidated(descr=<Guard0x7f5e1f3b8c28>) 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, 8686206759964130901, 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=<Guard0x7f5e1f3bc2a0>) i90 = int_lt(i86, 0) guard_false(i90, descr=<Guard0x7f5e1f3b8bb8>) p91 = getinteriorfield_gc_r(p57, i86, descr=<InteriorFieldDescr <FieldP odictentry.value 8>>) guard_value(p91, ConstPtr(ptr92), descr=<Guard0x7f5e1f3bc2f0>) p94 = force_token() i98 = int_add_ovf(i69, i71) guard_no_overflow(descr=<Guard0x7f5e1f3b8b80>) i100 = int_add(i71, 1) i102 = getfield_raw_i(140042320712704, descr=<FieldS pypysig_long_struct_inner.c_value 0>) i104 = int_lt(i102, 0) guard_false(i104, descr=<Guard0x7f5e1f3b8b48>) jump(p0, p1, p8, i98, i100, p33, p46, p34, p57, descr=TargetToken(140042228626016)) 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 136.56 seconds ======== program finished with exit code 1 elapsedTime=137.059370