Skip to content

Specialize calls for Python classes #91095

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Fidget-Spinner opened this issue Mar 6, 2022 · 5 comments
Closed

Specialize calls for Python classes #91095

Fidget-Spinner opened this issue Mar 6, 2022 · 5 comments
Labels
3.11 only security fixes

Comments

@Fidget-Spinner
Copy link
Member

Fidget-Spinner commented Mar 6, 2022

BPO 46939
Nosy @markshannon, @brandtbucher, @Fidget-Spinner
PRs
  • bpo-46939: Specialize calls to Python classes #31707
  • bpo-46939: Specialize calls to Python classes (POSTCALL edition) #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']

    @Fidget-Spinner
    Copy link
    Member Author

    Please see faster-cpython/ideas#267.

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

    @erlend-aasland
    Copy link
    Contributor

    erlend-aasland commented Jun 22, 2023

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

    @markshannon
    Copy link
    Member

    Done

    @vstinner vstinner reopened this Jun 22, 2023
    @vstinner
    Copy link
    Member

    The following change introduced a crash: commit 04492cb

    commit 04492cbc9aa45ac2c12d22083c406a0364c39f5b
    Author: Mark Shannon <mark@hotpy.org>
    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)
    

    @markshannon
    Copy link
    Member

    It seems unlikely that PR is responsible for that crash. I suspect that it just exposes it.
    More likely an issue with instrumentation #106012

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    3.11 only security fixes
    Projects
    None yet
    Development

    No branches or pull requests

    4 participants