cpython icon indicating copy to clipboard operation
cpython copied to clipboard

Specialize calls for Python classes

Open Fidget-Spinner opened this issue 2 years ago • 1 comments

BPO 46939
Nosy @markshannon, @brandtbucher, @Fidget-Spinner
PRs
  • python/cpython#31707
  • python/cpython#31936
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = None
    created_at = <Date 2022-03-06.13:49:31.311>
    labels = ['3.11']
    title = 'Specialize calls for Python classes'
    updated_at = <Date 2022-03-16.15:04:06.638>
    user = 'https://github.com/Fidget-Spinner'
    

    bugs.python.org fields:

    activity = <Date 2022-03-16.15:04:06.638>
    actor = 'kj'
    assignee = 'none'
    closed = False
    closed_date = None
    closer = None
    components = []
    creation = <Date 2022-03-06.13:49:31.311>
    creator = 'kj'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 46939
    keywords = ['patch']
    message_count = 1.0
    messages = ['414618']
    nosy_count = 3.0
    nosy_names = ['Mark.Shannon', 'brandtbucher', 'kj']
    pr_nums = ['31707', '31936']
    priority = 'normal'
    resolution = None
    stage = 'patch review'
    status = 'open'
    superseder = None
    type = None
    url = 'https://bugs.python.org/issue46939'
    versions = ['Python 3.11']
    
    • PR: gh-99331

    Fidget-Spinner avatar Mar 06 '22 13:03 Fidget-Spinner

    Please see https://github.com/faster-cpython/ideas/issues/267.

    I hope I'm not stepping on anyone's toes here (sorry if I cause any duplicate work)!

    Fidget-Spinner avatar Mar 06 '22 13:03 Fidget-Spinner

    Since this is closed as completed, I assume this implies gh-31707 and gh-31936 should be closed as well. cc. @Fidget-Spinner

    erlend-aasland avatar Jun 22 '23 12:06 erlend-aasland

    Done

    markshannon avatar Jun 22 '23 12:06 markshannon

    The following change introduced a crash: commit 04492cbc9aa45ac2c12d22083c406a0364c39f5b

    commit 04492cbc9aa45ac2c12d22083c406a0364c39f5b
    Author: Mark Shannon <[email protected]>
    Date:   Thu Jun 22 09:48:19 2023 +0100
    
        GH-91095: Specialize calls to normal Python classes. (GH-99331)
    

    To reproduce the crash:

    $ git checkout 04492cbc9aa45ac2c12d22083c406a0364c39f5b
    $ git clean -fdx
    $ ./configure --with-pydebug && make
    $ ./python -m test -j1 -R 3:3 test_import -v -m test_concurrency -m test___cached___legacy_pyc -m test_package___cached___from_pyc
    (...)
    test_concurrency (test.test_import.ImportTests.test_concurrency) ...
    
    python: Python/instrumentation.c:940: call_instrumentation_vector: Assertion `code->_co_instrumentation_version == tstate->interp->monitoring_version' failed.
    Fatal Python error: Aborted
    
    Current thread 0x00007f025195c6c0 (most recent call first):
      File "__init__", line ??? in __init__
      File "<frozen importlib._bootstrap_external>", line 1465 in _path_hooks
      File "<frozen importlib._bootstrap_external>", line 1489 in _path_importer_cache
      File "<frozen importlib._bootstrap_external>", line 1502 in _get_spec
      File "<frozen importlib._bootstrap_external>", line 1530 in find_spec
      File "<frozen importlib._bootstrap>", line 1168 in _find_spec
      File "<frozen importlib._bootstrap>", line 1228 in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 1266 in _find_and_load
      File "/home/vstinner/python/main/Lib/test/test_import/__init__.py", line 701 in run
      File "/home/vstinner/python/main/Lib/threading.py", line 989 in run
      File "/home/vstinner/python/main/Lib/threading.py", line 1052 in _bootstrap_inner
      File "/home/vstinner/python/main/Lib/threading.py", line 1009 in _bootstrap
    
    Thread 0x00007f025115b6c0 (most recent call first):
      File "/home/vstinner/python/main/Lib/threading.py", line 334 in wait
      File "/home/vstinner/python/main/Lib/threading.py", line 634 in wait
      File "/home/vstinner/python/main/Lib/test/test_import/__init__.py", line 699 in run
      File "/home/vstinner/python/main/Lib/threading.py", line 989 in run
      File "/home/vstinner/python/main/Lib/threading.py", line 1052 in _bootstrap_inner
      File "/home/vstinner/python/main/Lib/threading.py", line 1009 in _bootstrap
    
    Thread 0x00007f026045d740 (most recent call first):
      File "/home/vstinner/python/main/Lib/threading.py", line 1146 in _wait_for_tstate_lock
      File "/home/vstinner/python/main/Lib/threading.py", line 1130 in join
      File "/home/vstinner/python/main/Lib/test/support/threading_helper.py", line 144 in start_threads
      File "/home/vstinner/python/main/Lib/contextlib.py", line 144 in __exit__
      File "/home/vstinner/python/main/Lib/test/test_import/__init__.py", line 711 in test_concurrency
      File "/home/vstinner/python/main/Lib/unittest/case.py", line 589 in _callTestMethod
      File "/home/vstinner/python/main/Lib/unittest/case.py", line 634 in run
      File "/home/vstinner/python/main/Lib/unittest/case.py", line 690 in __call__
      File "/home/vstinner/python/main/Lib/unittest/suite.py", line 122 in run
      File "/home/vstinner/python/main/Lib/unittest/suite.py", line 84 in __call__
      File "/home/vstinner/python/main/Lib/unittest/suite.py", line 122 in run
      File "/home/vstinner/python/main/Lib/unittest/suite.py", line 84 in __call__
      File "/home/vstinner/python/main/Lib/unittest/suite.py", line 122 in run
      File "/home/vstinner/python/main/Lib/unittest/suite.py", line 84 in __call__
      File "/home/vstinner/python/main/Lib/unittest/runner.py", line 240 in run
      File "/home/vstinner/python/main/Lib/test/support/__init__.py", line 1115 in _run_suite
      File "/home/vstinner/python/main/Lib/test/support/__init__.py", line 1241 in run_unittest
      File "/home/vstinner/python/main/Lib/test/libregrtest/runtest.py", line 294 in _test_module
      File "/home/vstinner/python/main/Lib/test/libregrtest/refleak.py", line 90 in dash_R
      File "/home/vstinner/python/main/Lib/test/libregrtest/runtest.py", line 328 in _runtest_inner2
      File "/home/vstinner/python/main/Lib/test/libregrtest/runtest.py", line 373 in _runtest_inner
      File "/home/vstinner/python/main/Lib/test/libregrtest/runtest.py", line 248 in _runtest
      File "/home/vstinner/python/main/Lib/test/libregrtest/runtest.py", line 278 in runtest
      File "/home/vstinner/python/main/Lib/test/libregrtest/runtest_mp.py", line 98 in run_tests_worker
      File "/home/vstinner/python/main/Lib/test/libregrtest/main.py", line 779 in _main
      File "/home/vstinner/python/main/Lib/test/libregrtest/main.py", line 758 in main
      File "/home/vstinner/python/main/Lib/test/libregrtest/main.py", line 822 in main
      File "/home/vstinner/python/main/Lib/test/regrtest.py", line 43 in _main
      File "/home/vstinner/python/main/Lib/test/regrtest.py", line 47 in <module>
      File "/home/vstinner/python/main/Lib/runpy.py", line 88 in _run_code
      File "/home/vstinner/python/main/Lib/runpy.py", line 198 in _run_module_as_main
    
    Extension modules: _testcapi, _testinternalcapi, _testsinglephase, _testmultiphase, _xxsubinterpreters (total: 5)
    

    vstinner avatar Jun 22 '23 21:06 vstinner

    It seems unlikely that PR is responsible for that crash. I suspect that it just exposes it. More likely an issue with instrumentation https://github.com/python/cpython/issues/106012

    markshannon avatar Jun 23 '23 08:06 markshannon