This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2021年04月27日 22:55 by vstinner, last changed 2022年04月11日 14:59 by admin.
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 25683 | merged | vstinner, 2021年04月28日 11:13 | |
| PR 25685 | closed | miss-islington, 2021年04月28日 11:41 | |
| PR 25686 | merged | vstinner, 2021年04月28日 11:43 | |
| Messages (4) | |||
|---|---|---|---|
| msg392145 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2021年04月27日 22:55 | |
Example on Linux. $ ./python -m test test_interpreters -m test.test_interpreters.TestInterpreterAttrs.test_id_type 0:00:00 load avg: 1.20 Run tests sequentially 0:00:00 load avg: 1.20 [1/1] test_interpreters python: Python/pystate.c:561: _PyInterpreterState_IDDecref: Assertion `interp->id_refcount != 0' failed. Fatal Python error: Aborted Current thread 0x00007f05eab42740 (most recent call first): File "/home/vstinner/python/master/Lib/unittest/case.py", line 549 in _callTestMethod File "/home/vstinner/python/master/Lib/unittest/case.py", line 592 in run File "/home/vstinner/python/master/Lib/unittest/case.py", line 652 in __call__ File "/home/vstinner/python/master/Lib/unittest/suite.py", line 122 in run File "/home/vstinner/python/master/Lib/unittest/suite.py", line 84 in __call__ File "/home/vstinner/python/master/Lib/unittest/suite.py", line 122 in run File "/home/vstinner/python/master/Lib/unittest/suite.py", line 84 in __call__ File "/home/vstinner/python/master/Lib/unittest/suite.py", line 122 in run File "/home/vstinner/python/master/Lib/unittest/suite.py", line 84 in __call__ File "/home/vstinner/python/master/Lib/test/support/testresult.py", line 169 in run File "/home/vstinner/python/master/Lib/test/support/__init__.py", line 959 in _run_suite File "/home/vstinner/python/master/Lib/test/support/__init__.py", line 1082 in run_unittest File "/home/vstinner/python/master/Lib/test/libregrtest/runtest.py", line 210 in _test_module File "/home/vstinner/python/master/Lib/test/libregrtest/runtest.py", line 246 in _runtest_inner2 File "/home/vstinner/python/master/Lib/test/libregrtest/runtest.py", line 282 in _runtest_inner File "/home/vstinner/python/master/Lib/test/libregrtest/runtest.py", line 154 in _runtest File "/home/vstinner/python/master/Lib/test/libregrtest/runtest.py", line 194 in runtest File "/home/vstinner/python/master/Lib/test/libregrtest/main.py", line 423 in run_tests_sequential File "/home/vstinner/python/master/Lib/test/libregrtest/main.py", line 521 in run_tests File "/home/vstinner/python/master/Lib/test/libregrtest/main.py", line 694 in _main File "/home/vstinner/python/master/Lib/test/libregrtest/main.py", line 641 in main File "/home/vstinner/python/master/Lib/test/libregrtest/main.py", line 719 in main File "/home/vstinner/python/master/Lib/test/__main__.py", line 2 in <module> File "/home/vstinner/python/master/Lib/runpy.py", line 86 in _run_code File "/home/vstinner/python/master/Lib/runpy.py", line 196 in _run_module_as_main Extension modules: _testcapi, _xxsubinterpreters (total: 2) Abandon (core dumped) When the whole test case is run, it's fine: $ ./python -m test test_interpreters -m TestInterpreterAttrs -v == CPython 3.10.0a7+ (heads/master:6bd9288b80, Apr 27 2021, 22:16:25) [GCC 11.0.1 20210324 (Red Hat 11.0.1-0)] == Linux-5.11.15-300.fc34.x86_64-x86_64-with-glibc2.33 little-endian == cwd: /home/vstinner/python/master/build/test_python_16394æ == CPU count: 8 == encodings: locale=UTF-8, FS=utf-8 0:00:00 load avg: 1.39 Run tests sequentially 0:00:00 load avg: 1.39 [1/1] test_interpreters test_custom_id (test.test_interpreters.TestInterpreterAttrs) ... ok test_custom_isolated_default (test.test_interpreters.TestInterpreterAttrs) ... skipped 'not ready yet (see bpo-32604)' test_custom_isolated_explicit (test.test_interpreters.TestInterpreterAttrs) ... ok test_equality (test.test_interpreters.TestInterpreterAttrs) ... ok test_id_readonly (test.test_interpreters.TestInterpreterAttrs) ... ok test_id_type (test.test_interpreters.TestInterpreterAttrs) ... ok test_isolated_readonly (test.test_interpreters.TestInterpreterAttrs) ... ok test_main_id (test.test_interpreters.TestInterpreterAttrs) ... ok test_main_isolated (test.test_interpreters.TestInterpreterAttrs) ... skipped 'not ready yet (see bpo-32604)' test_subinterpreter_isolated_default (test.test_interpreters.TestInterpreterAttrs) ... skipped 'not ready yet (see bpo-32604)' test_subinterpreter_isolated_explicit (test.test_interpreters.TestInterpreterAttrs) ... ok ---------------------------------------------------------------------- Ran 11 tests in 0.159s OK (skipped=3) == Tests result: SUCCESS == 1 test OK. Total duration: 285 ms Tests result: SUCCESS |
|||
| msg392183 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2021年04月28日 11:05 | |
Creating an _interpreters.InterpreterID object calls newinterpid() which calls _PyInterpreterState_IDIncref(interp). _PyInterpreterState_IDIncref(interp) does nothing if interp->id_mutex is NULL. Calling _interpreters.get_current() calls interp_get_current() which calls _PyInterpreterState_IDInitref(). _PyInterpreterState_IDInitref() creates the id_mutex and initializes id_refcount to 0. Later, when the _interpreters.InterpreterID object is deallocated, interpid_dealloc() calls _PyInterpreterState_IDDecref(). Since id_mutex was created in the meanwhile, _PyInterpreterState_IDDecref() now decrements id_refcnt. ... It doesn't work: _PyInterpreterState_IDIncref() should always increase the reference count. |
|||
| msg392187 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2021年04月28日 11:40 | |
New changeset 32c5a174445ec93747240cd8472012276ed27acf by Victor Stinner in branch 'master': bpo-43962: Fix _PyInterpreterState_IDIncref() (GH-25683) https://github.com/python/cpython/commit/32c5a174445ec93747240cd8472012276ed27acf |
|||
| msg392197 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2021年04月28日 13:47 | |
New changeset 77db337f1e69213e62ba79a797540cc4ac23492e by Victor Stinner in branch '3.8': bpo-43962: Fix _PyInterpreterState_IDIncref() (GH-25683) (GH-25686) https://github.com/python/cpython/commit/77db337f1e69213e62ba79a797540cc4ac23492e |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:59:44 | admin | set | github: 88128 |
| 2021年04月28日 13:47:01 | vstinner | set | messages: + msg392197 |
| 2021年04月28日 11:43:58 | vstinner | set | pull_requests: + pull_request24376 |
| 2021年04月28日 11:41:03 | miss-islington | set | nosy:
+ miss-islington pull_requests: + pull_request24375 |
| 2021年04月28日 11:40:51 | vstinner | set | messages: + msg392187 |
| 2021年04月28日 11:13:48 | vstinner | set | keywords:
+ patch stage: patch review pull_requests: + pull_request24373 |
| 2021年04月28日 11:05:17 | vstinner | set | messages: + msg392183 |
| 2021年04月27日 22:55:36 | vstinner | set | title: test_interpreters: when test_id_type() is run alone, it fails with an assertion error -> test_interpreters: when TestInterpreterAttrs.test_id_type() is run alone, it fails with an assertion error |
| 2021年04月27日 22:55:01 | vstinner | create | |