using config pypy/testrunner_cfg.py using config machine_cfg.py running 4 parallel test workers setting MAKEFLAGS to ' ' (space) -- annotator/test -- config/test -- flowspace/test -- tool/algo/test -- tool/cparser/test -- tool/jitlogparser/test -- tool/pytest/test -- tool/test -- memory/gc/test -- memory/gctransform/test -- memory/test/test_gctypelayout.py -- memory/test/test_generational_gc.py -- memory/test/test_growingsemispace_gc.py -- memory/test/test_hybrid_gc.py -- memory/test/test_hybrid_gc_smallheap.py -- memory/test/test_incminimark_gc.py -- memory/test/test_incminimark_gc_cardmarking.py -- memory/test/test_lldict.py -- memory/test/test_minimark_gc.py -- memory/test/test_minimark_gc_cardmarking.py -- memory/test/test_semispace_gc.py -- memory/test/test_support.py -- memory/test/test_transformed_gc.py -- total: 23 to run ++ 09:05:57 starting annotator/test [1 started in total] ++ 09:05:57 starting config/test [2 started in total] ++ 09:05:57 starting flowspace/test [3 started in total] ++ 09:05:57 starting tool/algo/test [4 started in total] __ flowspace/test [1 done in total, somefailed=False] _________________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 162 items flowspace\test\test_argument.py ..... flowspace\test\test_checkgraph.py ........ flowspace\test\test_flowcontext.py ..... flowspace\test\test_framestate.py .......... flowspace\test\test_generator.py ..... flowspace\test\test_model.py ......... flowspace\test\test_objspace.py .............................................................xx...................xx..x................ flowspace\test\test_objspace_py2.py .... flowspace\test\test_print_function.py ......... flowspace\test\test_unroll.py .... =================== 157 passed, 5 xfailed in 24.56 seconds ==================== ++ 09:06:25 starting tool/cparser/test [5 started in total] __ config/test [2 done in total, somefailed=False] ____________________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.py rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 43 items config\test\test_config.py .................................... config\test\test_parse.py .. config\test\test_support.py sss config\test\test_translationoption.py .. ==================== 40 passed, 3 skipped in 26.77 seconds ==================== ++ 09:06:29 starting tool/jitlogparser/test [6 started in total] __ tool/algo/test [3 done in total, somefailed=False] _________________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 44 items tool\algo\test\test_bitstring.py .... tool\algo\test\test_color.py ..... tool\algo\test\test_graphlib.py ...s....ss.....s....s....... tool\algo\test\test_regalloc.py .. tool\algo\test\test_sparsemat.py ... tool\algo\test\test_unionfind.py .. ==================== 39 passed, 5 skipped in 29.08 seconds ==================== ++ 09:06:29 starting tool/pytest/test [7 started in total] __ tool/pytest/test [4 done in total, somefailed=False] _______________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 1 items tool\pytest\test\test_expecttest.py s ========================== 1 skipped in 0.40 seconds ========================== ++ 09:06:32 starting tool/test [8 started in total] __ tool/jitlogparser/test [5 done in total, somefailed=False] _________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 24 items tool\jitlogparser\test\test_parser.py .......ss...ssss....... tool\jitlogparser\test\test_storage.py . ==================== 18 passed, 6 skipped in 3.29 seconds ===================== ++ 09:06:35 starting memory/gc/test [9 started in total] __ tool/cparser/test [6 done in total, somefailed=False] ______________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 21 items tool\cparser\test\test_cts.py ..................... ========================== 21 passed in 9.37 seconds ========================== ++ 09:06:37 starting memory/gctransform/test [10 started in total] __ tool/test [7 done in total, somefailed=False] ______________________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 72 items tool\test\test_ansi_print.py ........ tool\test\test_descriptor.py ... tool\test\test_error.py .... tool\test\test_flattenrec.py . tool\test\test_frozenlist.py . tool\test\test_gcc_cache.py ..... tool\test\test_identitydict.py .......... tool\test\test_killsubprocess.py ... tool\test\test_leakfinder.py ........ tool\test\test_logparser.py ... tool\test\test_nullpath.py . tool\test\test_pairtype.py ....... tool\test\test_runsubprocess.py .ssss tool\test\test_sourcetools.py ......... tool\test\test_udir.py .. tool\test\test_version.py .. ==================== 68 passed, 4 skipped in 11.27 seconds ==================== ++ 09:06:47 starting memory/test/test_gctypelayout.py [11 started in total] __ memory/test/test_gctypelayout.py [8 done in total, somefailed=False] _______ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 5 items memory\test\test_gctypelayout.py ..... ========================== 5 passed in 2.54 seconds =========================== ++ 09:06:51 starting memory/test/test_generational_gc.py [12 started in total] __ memory/test/test_generational_gc.py [9 done in total, somefailed=False] ____ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 47 items memory\test\test_generational_gc.py ............................................... ========================= 47 passed in 91.17 seconds ========================== ++ 09:08:26 starting memory/test/test_growingsemispace_gc.py [13 started in total] __ annotator/test [10 done in total, somefailed=False] ________________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 697 items annotator\test\test_annrpython.py ......................................................................................x..........................................................................................................................................x........................................................................................xx............. annotator\test\test_annrpython_py2.py ... annotator\test\test_annsimplifyrpython.py ......................................................................................x..........................................................................................................................................x........................................................................................xx................ annotator\test\test_argument.py ...... annotator\test\test_description.py ... annotator\test\test_model.py ..........x.x.......... annotator\test\test_signature.py . ================== 687 passed, 10 xfailed in 172.17 seconds =================== ++ 09:08:58 starting memory/test/test_hybrid_gc.py [14 started in total] __ memory/gctransform/test [11 done in total, somefailed=False] _______________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 85 items memory\gctransform\test\test_boehm.py ...... memory\gctransform\test\test_framework.py ................. memory\gctransform\test\test_refcounting.py .s............. memory\gctransform\test\test_shadowcolor.py ................................... memory\gctransform\test\test_statistics.py .. memory\gctransform\test\test_transform.py .......... =================== 84 passed, 1 skipped in 162.48 seconds ==================== ++ 09:09:24 starting memory/test/test_hybrid_gc_smallheap.py [15 started in total] __ memory/test/test_growingsemispace_gc.py [12 done in total, somefailed=False] [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 47 items memory\test\test_growingsemispace_gc.py ............................................... ========================= 47 passed in 98.66 seconds ========================== ++ 09:10:08 starting memory/test/test_incminimark_gc.py [16 started in total] __ memory/test/test_hybrid_gc.py [13 done in total, somefailed=False] _________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 50 items memory\test\test_hybrid_gc.py .................................................. ========================= 50 passed in 97.49 seconds ========================== ++ 09:10:40 starting memory/test/test_incminimark_gc_cardmarking.py [17 started in total] __ memory/test/test_hybrid_gc_smallheap.py [14 done in total, somefailed=False] [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 46 items memory\test\test_hybrid_gc_smallheap.py .............................................. ========================= 46 passed in 79.40 seconds ========================== ++ 09:10:51 starting memory/test/test_lldict.py [18 started in total] __ memory/test/test_lldict.py [15 done in total, somefailed=False] ____________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 5 items memory\test\test_lldict.py ..... ========================== 5 passed in 1.09 seconds =========================== ++ 09:10:55 starting memory/test/test_minimark_gc.py [19 started in total] __ memory/test/test_incminimark_gc.py [16 done in total, somefailed=False] ____ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 52 items memory\test\test_incminimark_gc.py ..................................................s. =================== 51 passed, 1 skipped in 114.39 seconds ==================== ++ 09:12:04 starting memory/test/test_minimark_gc_cardmarking.py [20 started in total] __ memory/test/test_minimark_gc.py [17 done in total, somefailed=False] _______ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 48 items memory\test\test_minimark_gc.py ................................................ ========================= 48 passed in 97.02 seconds ========================== ++ 09:12:37 starting memory/test/test_semispace_gc.py [21 started in total] __ memory/gc/test [18 done in total, somefailed=True] _________________________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 216 items memory\gc\test\test_direct.py ....................................s............................................................................. memory\gc\test\test_env.py ....... memory\gc\test\test_hook.py ... memory\gc\test\test_incminimark.py FFF memory\gc\test\test_inspector.py .. memory\gc\test\test_minimark.py ... memory\gc\test\test_minimarkpage.py ............... memory\gc\test\test_object_pinning.py ............................................. memory\gc\test\test_rawrefcount.py FsssFsssssFFFFFFFFFsFFF. ================================== FAILURES =================================== _____________________ test_card_marking_words_for_length ______________________ def test_card_marking_words_for_length(): > gc = IncrementalMiniMarkGC(None, card_page_indices=128) memory\gc\test\test_incminimark.py:9: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ memory\gc\incminimark.py:299: in __init__ self._setup_rawrefcount_pyobj_hdr(config) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = None def _setup_rawrefcount_pyobj_hdr(self, config): "NOT_RPYTHON" # ob_pypy_link storage: cpyext builds that need the visible PyObject header # to match CPython's {ob_refcnt, ob_type} exactly (abi3 wheel loading) move # the link to a hidden prefix word immediately *before* ob_refcnt, like # PyGC_HEAD; their cpyext allocator reserves that word. Builds that don't # need abi3 compatibility keep the link inline as a regular header field, # as PyPy has always done -- their allocator never reserves a prefix word, # so turning this on without the matching cpyext change corrupts memory # before every allocation. # # translation.rawrefcount_link_prefix is the single source of truth for # this choice; it is False everywhere except where a target explicitly # opts in (see pypy/goal/targetpypystandalone.py, set for the py3.12/abi3 # build). rpython.rlib.rawrefcount.RRC_LINK_PREFIX mirrors this value for # its untranslated (test-only) equivalents and must be kept in sync by hand. > self.rrc_link_prefix = config.rawrefcount_link_prefix E AttributeError: 'NoneType' object has no attribute 'rawrefcount_link_prefix' memory\gc\incminimark.py:3182: AttributeError _____________________ test_card_marking_bytes_for_length ______________________ def test_card_marking_bytes_for_length(): > gc = IncrementalMiniMarkGC(None, card_page_indices=128) memory\gc\test\test_incminimark.py:21: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ memory\gc\incminimark.py:299: in __init__ self._setup_rawrefcount_pyobj_hdr(config) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = None def _setup_rawrefcount_pyobj_hdr(self, config): "NOT_RPYTHON" # ob_pypy_link storage: cpyext builds that need the visible PyObject header # to match CPython's {ob_refcnt, ob_type} exactly (abi3 wheel loading) move # the link to a hidden prefix word immediately *before* ob_refcnt, like # PyGC_HEAD; their cpyext allocator reserves that word. Builds that don't # need abi3 compatibility keep the link inline as a regular header field, # as PyPy has always done -- their allocator never reserves a prefix word, # so turning this on without the matching cpyext change corrupts memory # before every allocation. # # translation.rawrefcount_link_prefix is the single source of truth for # this choice; it is False everywhere except where a target explicitly # opts in (see pypy/goal/targetpypystandalone.py, set for the py3.12/abi3 # build). rpython.rlib.rawrefcount.RRC_LINK_PREFIX mirrors this value for # its untranslated (test-only) equivalents and must be kept in sync by hand. > self.rrc_link_prefix = config.rawrefcount_link_prefix E AttributeError: 'NoneType' object has no attribute 'rawrefcount_link_prefix' memory\gc\incminimark.py:3182: AttributeError __________________________ test_set_major_threshold ___________________________ def test_set_major_threshold(): gc = IncrementalMiniMarkGC(None, major_collection_threshold=2.0, > growth_rate_max=1.5) memory\gc\test\test_incminimark.py:34: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ memory\gc\incminimark.py:299: in __init__ self._setup_rawrefcount_pyobj_hdr(config) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = None def _setup_rawrefcount_pyobj_hdr(self, config): "NOT_RPYTHON" # ob_pypy_link storage: cpyext builds that need the visible PyObject header # to match CPython's {ob_refcnt, ob_type} exactly (abi3 wheel loading) move # the link to a hidden prefix word immediately *before* ob_refcnt, like # PyGC_HEAD; their cpyext allocator reserves that word. Builds that don't # need abi3 compatibility keep the link inline as a regular header field, # as PyPy has always done -- their allocator never reserves a prefix word, # so turning this on without the matching cpyext change corrupts memory # before every allocation. # # translation.rawrefcount_link_prefix is the single source of truth for # this choice; it is False everywhere except where a target explicitly # opts in (see pypy/goal/targetpypystandalone.py, set for the py3.12/abi3 # build). rpython.rlib.rawrefcount.RRC_LINK_PREFIX mirrors this value for # its untranslated (test-only) equivalents and must be kept in sync by hand. > self.rrc_link_prefix = config.rawrefcount_link_prefix E AttributeError: 'NoneType' object has no attribute 'rawrefcount_link_prefix' memory\gc\incminimark.py:3182: AttributeError _______________ TestRawRefCount.test_rawrefcount_objects_basic ________________ self = old = False def test_rawrefcount_objects_basic(self, old=False): p1, p1ref, r1, r1addr, check_alive = ( > self._rawrefcount_pair(42, is_light=True, create_old=old)) memory\gc\test\test_rawrefcount.py:92: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = True, is_pyobj = False, create_old = False create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError _____________ TestRawRefCount.test_rawrefcount_objects_basic_old ______________ self = def test_rawrefcount_objects_basic_old(self): > self.test_rawrefcount_objects_basic(old=True) memory\gc\test\test_rawrefcount.py:163: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ memory\gc\test\test_rawrefcount.py:92: in test_rawrefcount_objects_basic self._rawrefcount_pair(42, is_light=True, create_old=old)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = True, is_pyobj = False, create_old = True create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError _______________ TestRawRefCount.test_pypy_nonlight_dies_quickly _______________ self = old = False def test_pypy_nonlight_dies_quickly(self, old=False): p1, p1ref, r1, r1addr, check_alive = ( > self._rawrefcount_pair(42, is_light=False, create_old=old)) memory\gc\test\test_rawrefcount.py:221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = False, create_old = False create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError __________ TestRawRefCount.test_pypy_nonlight_survives_from_raw_old ___________ self = def test_pypy_nonlight_survives_from_raw_old(self): > self.test_pypy_nonlight_survives_from_raw(old=True) memory\gc\test\test_rawrefcount.py:237: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ memory\gc\test\test_rawrefcount.py:177: in test_pypy_nonlight_survives_from_raw self._rawrefcount_pair(42, is_light=False, create_old=old)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = False, create_old = True create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError __________ TestRawRefCount.test_pypy_nonlight_survives_from_obj_old ___________ self = def test_pypy_nonlight_survives_from_obj_old(self): > self.test_pypy_nonlight_survives_from_obj(old=True) memory\gc\test\test_rawrefcount.py:239: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ memory\gc\test\test_rawrefcount.py:200: in test_pypy_nonlight_survives_from_obj self._rawrefcount_pair(42, is_light=False, create_old=old)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = False, create_old = True create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError _____________ TestRawRefCount.test_pypy_nonlight_dies_quickly_old _____________ self = def test_pypy_nonlight_dies_quickly_old(self): > self.test_pypy_nonlight_dies_quickly(old=True) memory\gc\test\test_rawrefcount.py:241: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ memory\gc\test\test_rawrefcount.py:221: in test_pypy_nonlight_dies_quickly self._rawrefcount_pair(42, is_light=False, create_old=old)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = False, create_old = True create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError ___ TestRawRefCount.test_pyobject_pypy_link_dies_on_minor_collection[False] ___ self = external = False @py.test.mark.parametrize('external', [False, True]) def test_pyobject_pypy_link_dies_on_minor_collection(self, external): p1, p1ref, r1, r1addr, check_alive = ( > self._rawrefcount_pair(42, is_pyobj=True, force_external=external)) memory\gc\test\test_rawrefcount.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = True, create_old = False create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError ___ TestRawRefCount.test_pyobject_pypy_link_dies_on_minor_collection[True] ____ self = external = True @py.test.mark.parametrize('external', [False, True]) def test_pyobject_pypy_link_dies_on_minor_collection(self, external): p1, p1ref, r1, r1addr, check_alive = ( > self._rawrefcount_pair(42, is_pyobj=True, force_external=external)) memory\gc\test\test_rawrefcount.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = True, create_old = False create_immortal = False, force_external = True def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError _______________ TestRawRefCount.test_pyobject_dies[False-False] _______________ self = old = False, external = False @py.test.mark.parametrize('old,external', [ (False, False), (True, False), (False, True)]) def test_pyobject_dies(self, old, external): p1, p1ref, r1, r1addr, check_alive = ( self._rawrefcount_pair(42, is_pyobj=True, create_old=old, > force_external=external)) memory\gc\test\test_rawrefcount.py:260: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = True, create_old = False create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError _______________ TestRawRefCount.test_pyobject_dies[True-False] ________________ self = old = True, external = False @py.test.mark.parametrize('old,external', [ (False, False), (True, False), (False, True)]) def test_pyobject_dies(self, old, external): p1, p1ref, r1, r1addr, check_alive = ( self._rawrefcount_pair(42, is_pyobj=True, create_old=old, > force_external=external)) memory\gc\test\test_rawrefcount.py:260: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = True, create_old = True create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError _______________ TestRawRefCount.test_pyobject_dies[False-True] ________________ self = old = False, external = True @py.test.mark.parametrize('old,external', [ (False, False), (True, False), (False, True)]) def test_pyobject_dies(self, old, external): p1, p1ref, r1, r1addr, check_alive = ( self._rawrefcount_pair(42, is_pyobj=True, create_old=old, > force_external=external)) memory\gc\test\test_rawrefcount.py:260: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = True, create_old = False create_immortal = False, force_external = True def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError _________ TestRawRefCount.test_pyobject_survives_from_obj[True-False] _________ self = old = True, external = False @py.test.mark.parametrize('old,external', [ (False, False), (True, False), (False, True)]) def test_pyobject_survives_from_obj(self, old, external): if not old and not external: py.test.skip(_SKIP_UNTRANSLATED) # nursery-move symbolic link only p1, p1ref, r1, r1addr, check_alive = ( self._rawrefcount_pair(42, is_pyobj=True, create_old=old, > force_external=external)) memory\gc\test\test_rawrefcount.py:281: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = True, create_old = True create_immortal = False, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError _________ TestRawRefCount.test_pyobject_survives_from_obj[False-True] _________ self = old = False, external = True @py.test.mark.parametrize('old,external', [ (False, False), (True, False), (False, True)]) def test_pyobject_survives_from_obj(self, old, external): if not old and not external: py.test.skip(_SKIP_UNTRANSLATED) # nursery-move symbolic link only p1, p1ref, r1, r1addr, check_alive = ( self._rawrefcount_pair(42, is_pyobj=True, create_old=old, > force_external=external)) memory\gc\test\test_rawrefcount.py:281: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = True, create_old = False create_immortal = False, force_external = True def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError ___________ TestRawRefCount.test_pyobject_attached_to_prebuilt_obj ____________ self = def test_pyobject_attached_to_prebuilt_obj(self): p1, p1ref, r1, r1addr, check_alive = ( > self._rawrefcount_pair(42, create_immortal=True)) memory\gc\test\test_rawrefcount.py:303: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = intval = 42, is_light = False, is_pyobj = False, create_old = False create_immortal = True, force_external = False def _rawrefcount_pair(self, intval, is_light=False, is_pyobj=False, create_old=False, create_immortal=False, force_external=False): if is_light: rc = REFCNT_FROM_PYPY_LIGHT else: rc = REFCNT_FROM_PYPY self.trigger = [] self.gc.rawrefcount_init(lambda: self.trigger.append(1)) # if create_immortal: p1 = lltype.malloc(S, immortal=True) else: saved = self.gc.nonlarge_max try: if force_external: self.gc.nonlarge_max = 1 p1 = self.malloc(S) finally: self.gc.nonlarge_max = saved p1.x = intval if create_immortal: self.consider_constant(p1) elif create_old: self.stackroots.append(p1) self._collect(major=False) p1 = self.stackroots.pop() p1ref = lltype.cast_opaque_ptr(llmemory.GCREF, p1) # r1 points at ob_refcnt; the ob_pypy_link prefix is reserved before it r1 = rawrefcount._pyobject_alloc(immortal=create_immortal) r1.c_ob_refcnt = rc r1addr = llmemory.cast_ptr_to_adr(r1) if is_pyobj: assert not is_light self.gc.rawrefcount_create_link_pyobj(p1ref, r1addr) else: self.gc.rawrefcount_create_link_pypy(p1ref, r1addr) assert r1.c_ob_refcnt == rc > assert rawrefcount._ob_link_get(r1) != 0 E assert 0 != 0 E + where 0 = (<* >) E + where = E + where = rawrefcount._ob_link_get memory\gc\test\test_rawrefcount.py:75: AssertionError =========================== short test summary info =========================== FAIL memory/gc/test/test_incminimark.py::test_card_marking_words_for_length FAIL memory/gc/test/test_incminimark.py::test_card_marking_bytes_for_length FAIL memory/gc/test/test_incminimark.py::test_set_major_threshold FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_rawrefcount_objects_basic FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_rawrefcount_objects_basic_old FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pypy_nonlight_dies_quickly FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pypy_nonlight_survives_from_raw_old FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pypy_nonlight_survives_from_obj_old FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pypy_nonlight_dies_quickly_old FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pyobject_pypy_link_dies_on_minor_collection[False] FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pyobject_pypy_link_dies_on_minor_collection[True] FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pyobject_dies[False-False] FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pyobject_dies[True-False] FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pyobject_dies[False-True] FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pyobject_survives_from_obj[True-False] FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pyobject_survives_from_obj[False-True] FAIL memory/gc/test/test_rawrefcount.py::TestRawRefCount::()::test_pyobject_attached_to_prebuilt_obj ============= 17 failed, 189 passed, 10 skipped in 357.17 seconds ============= ++ 09:12:37 starting memory/test/test_support.py [22 started in total] __ memory/test/test_support.py [19 done in total, somefailed=False] ___________ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 9 items memory\test\test_support.py ......... ========================== 9 passed in 5.51 seconds =========================== ++ 09:12:43 starting memory/test/test_transformed_gc.py [23 started in total] __ memory/test/test_incminimark_gc_cardmarking.py [20 done in total, somefailed=False] [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 52 items memory\test\test_incminimark_gc_cardmarking.py ..................................................s. =================== 51 passed, 1 skipped in 114.76 seconds ==================== __ memory/test/test_minimark_gc_cardmarking.py [21 done in total, somefailed=False] [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 48 items memory\test\test_minimark_gc_cardmarking.py ................................................ ========================= 48 passed in 87.54 seconds ========================== __ memory/test/test_semispace_gc.py [22 done in total, somefailed=False] ______ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 47 items memory\test\test_semispace_gc.py ............................................... ========================= 47 passed in 65.62 seconds ========================== __ memory/test/test_transformed_gc.py [23 done in total, somefailed=False] ____ [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Updated environment with vsver 160, using x64 True [platform:msg] Set platform with 'host' cc=None, using cc='cl.exe', version='MSVC 160' ============================= test session starts ============================= platform win32 -- Python 2.7.18[pypy-7.3.22-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 hypothesis profile 'default' -> deadline=None, database=DirectoryBasedExampleDatabase('D:\\a\\pypy\\pypy\\rpython\\.hypothesis\\examples') pytest-2.9.2 from D:\a\pypy\pypy\pytest.pyc rootdir: D:\a\pypy\pypy\rpython, inifile: pytest.ini plugins: hypothesis-4.39.3 collected 183 items memory\test\test_transformed_gc.py ....s..................s..s.....s..................s..s............s..................s..s.............s.....................s................s.....................s.................s ================== 169 passed, 14 skipped in 376.24 seconds ===================