Skip to content
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

gh-107901: add the HAS_EVAL_BREAK instruction flag #108375

Merged
merged 9 commits into from
Aug 25, 2023

Conversation

iritkatriel
Copy link
Member

@iritkatriel iritkatriel commented Aug 23, 2023

This is motivated by #107901, which implies we need to make sure that all instructions the have an eval breaker check also have a line number.

I'm not adding that assertion here because it will fail, so that's going to require more work.

@iritkatriel iritkatriel requested a review from gvanrossum August 24, 2023 13:38
Copy link
Member

@gvanrossum gvanrossum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like how the flags framework is so easily extensible.

@@ -53,10 +55,11 @@ def names(self, value: bool | None = None) -> list[str]:
return list(dataclasses.asdict(self).keys())
return [n for n, v in dataclasses.asdict(self).items() if v == value]

def bitmap(self) -> int:
def bitmap(self, ignore: list[str] = []) -> int:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a mutable default sets alarm bells off in my head, even though you're safe in this case. Maybe make it an abstract set?

Tools/cases_generator/analysis.py Outdated Show resolved Hide resolved
Tools/cases_generator/flags.py Outdated Show resolved Hide resolved
Co-authored-by: Guido van Rossum <gvanrossum@gmail.com>
@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot AMD64 Debian root 3.x has failed when building commit 5f41376.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/all/#builders/345/builds/5629) and take a look at the build logs.
  4. Check if the failure is related to this commit (5f41376) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/all/#builders/345/builds/5629

Failed tests:

  • worker>
  • <regrtest

Summary of the results of the build (if available):

== Tests result: FAILURE then FAILURE ==

188 tests omitted:
test.test_asyncio.test_base_events test.test_asyncio.test_events
test.test_asyncio.test_futures2 test.test_asyncio.test_pep492
test.test_asyncio.test_proactor_events
test.test_asyncio.test_sendfile test.test_asyncio.test_ssl
test.test_asyncio.test_sslproto test.test_asyncio.test_tasks
test.test_asyncio.test_timeouts test.test_asyncio.test_transports
test.test_asyncio.test_windows_events
test.test_asyncio.test_windows_utils
test.test_concurrent_futures.test_deadlock
test.test_concurrent_futures.test_shutdown
test.test_concurrent_futures.test_wait
test.test_multiprocessing_fork.test_misc
test.test_multiprocessing_forkserver.test_processes
test.test_multiprocessing_spawn.test_manager
test.test_multiprocessing_spawn.test_processes test___all__
test___future__ test__xxinterpchannels test__xxsubinterpreters
test_abc test_asdl_parser test_ast test_asyncgen test_atexit
test_audit test_baseexception test_bdb test_bigmem test_binascii
test_binop test_bufio test_builtin test_bytes test_capi
test_charmapcodec test_clinic test_code test_codecencodings_cn
test_codecencodings_iso2022 test_codecencodings_jp
test_codecmaps_cn test_codecmaps_hk test_codecmaps_kr
test_collections test_compile test_compiler_assemble test_complex
test_context test_contextlib test_contextlib_async test_coroutines
test_crashers test_curses test_dbm test_dbm_dumb test_dbm_gnu
test_dis test_doctest test_docxmlrpc test_email test_embed
test_enum test_enumerate test_errno test_except_star
test_exception_variations test_exceptions test_file_eintr
test_filecmp test_fileutils test_fnmatch test_format
test_funcattrs test_functools test_future3 test_gc test_gdb
test_generated_cases test_generator_stop test_genericclass
test_genericpath test_global test_grammar test_httplib
test_imaplib test_importlib test_inspect test_int_literal
test_interpreters test_io test_isinstance test_iter test_itertools
test_json test_keywordonlyarg test_kqueue test_launcher
test_lltrace test_locale test_longexp test_memoryio
test_memoryview test_metaclass test_mimetypes test_monitoring
test_multibytecodec test_multiprocessing_main_handling test_ntpath
test_numeric_tower test_openpty test_operator test_os test_patma
test_perf_profiler test_pickletools test_pkg test_poll test_poplib
test_positional_only_arg test_posixpath test_print test_profile
test_pstats test_pwd test_py_compile test_pydoc test_raise
test_range test_repl test_resource test_rlcompleter test_runpy
test_sax test_secrets test_set test_shlex test_shutil test_signal
test_smtplib test_sqlite3 test_stat test_stringprep test_structseq
test_sundry test_support test_sys_settrace test_syslog
test_tarfile test_tempfile test_textwrap test_thread test_timeit
test_tkinter test_tokenize test_tomllib test_tools test_ttk
test_ttk_textonly test_tuple test_turtle test_type_annotations
test_type_comments test_type_params test_typing test_ucn
test_unary test_unicode_identifiers test_unicodedata test_unittest
test_unpack test_unparse test_urllib2_localnet
test_urllib_response test_userstring test_venv test_warnings
test_weakset test_with test_wsgiref test_xxtestfuzz test_zipfile
test_zipfile64 test_zoneinfo

265 tests OK.

10 slowest tests:

  • test_mailbox: 4 min
  • test_largefile: 3 min 13 sec
  • test_shelve: 2 min 40 sec
  • test_math: 2 min 27 sec
  • test_cppext: 1 min 3 sec
  • test.test_multiprocessing_spawn.test_misc: 58.5 sec
  • test_peg_generator: 54.4 sec
  • test_hashlib: 51.1 sec
  • test_compileall: 48.6 sec
  • test_regrtest: 44.5 sec

1 test failed:

10 tests skipped:
test_dbm_ndbm test_devpoll test_idle test_ioctl test_startfile
test_tcl test_winconsoleio test_winreg test_winsound test_wmi

1 re-run test:

Total duration: 26 min 41 sec

Click to see traceback logs
Traceback (most recent call last):
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/runtest.py", line 375, in _runtest_inner
    refleak = _runtest_inner2(ns, test_name)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/runtest.py", line 315, in _runtest_inner2
    the_module = importlib.import_module(abstest)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1293, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1266, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1230, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'test.<regrtest worker>'


Traceback (most recent call last):
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/support/__init__.py", line 203, in _force_run
Warning --     return func(*args)
Warning --            ^^^^^^^^^^^
Warning -- OSError: [Errno 39] Directory not empty: '/tmp/test_python_982lzjpi/tmp30gys4fb/python-installation/lib/python3.13/test'
Warning -- 
Warning -- During handling of the above exception, another exception occurred:
Warning -- 
Warning -- Traceback (most recent call last):
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/runtest_mp.py", line 350, in run
Warning --     mp_result = self._runtest(test_name)
Warning --                 ^^^^^^^^^^^^^^^^^^^^^^^^
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/runtest_mp.py", line 297, in _runtest
Warning --     os_helper.rmtree(tmp_dir)
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/support/os_helper.py", line 442, in rmtree
Warning --     _rmtree(path)
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/support/os_helper.py", line 426, in _rmtree
Warning --     _rmtree_inner(path)
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/support/os_helper.py", line 422, in _rmtree_inner
Warning --     _rmtree_inner(fullname)
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/support/os_helper.py", line 422, in _rmtree_inner
Warning --     _rmtree_inner(fullname)
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/support/os_helper.py", line 422, in _rmtree_inner
Warning --     _rmtree_inner(fullname)
Warning --   [Previous line repeated 1 more time]
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/support/os_helper.py", line 423, in _rmtree_inner
Warning --     _force_run(path, os.rmdir, fullname)
Warning --   File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/support/__init__.py", line 214, in _force_run
Warning --     return func(*args)
Warning --            ^^^^^^^^^^^
Warning -- OSError: [Errno 39] Directory not empty: '/tmp/test_python_982lzjpi/tmp30gys4fb/python-installation/lib/python3.13/test'
Kill <TestWorkerProcess #2 running test=test_tokenize pid=1750047 time=19.9 sec> process group

@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot ARM Raspbian 3.x has failed when building commit 5f41376.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/all/#builders/424/builds/4731) and take a look at the build logs.
  4. Check if the failure is related to this commit (5f41376) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/all/#builders/424/builds/4731

Failed tests:

  • test.test_concurrent_futures.test_shutdown

Failed subtests:

  • test_interpreter_shutdown - test.test_concurrent_futures.test_shutdown.ProcessPoolForkserverProcessPoolShutdownTest.test_interpreter_shutdown

Summary of the results of the build (if available):

== Tests result: FAILURE then FAILURE ==

443 tests OK.

10 slowest tests:

  • test_venv: 10 min 28 sec
  • test_largefile: 8 min 7 sec
  • test.test_multiprocessing_spawn.test_processes: 4 min 40 sec
  • test_math: 4 min 35 sec
  • test_cppext: 2 min 57 sec
  • test_embed: 2 min 55 sec
  • test_hashlib: 2 min 14 sec
  • test_lzma: 1 min 53 sec
  • test_peg_generator: 1 min 49 sec
  • test_tarfile: 1 min 47 sec

1 test failed:
test.test_concurrent_futures.test_shutdown

19 tests skipped:
test.test_asyncio.test_windows_events
test.test_asyncio.test_windows_utils test_devpoll test_idle
test_ioctl test_kqueue test_launcher test_perf_profiler
test_startfile test_tcl test_tkinter test_ttk test_ttk_textonly
test_turtle test_winconsoleio test_winreg test_winsound test_wmi
test_zipfile64

1 re-run test:
test.test_concurrent_futures.test_shutdown

Total duration: 41 min 28 sec

Click to see traceback logs
Traceback (most recent call last):
  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/test/test_concurrent_futures/test_shutdown.py", line 49, in test_interpreter_shutdown
    self.assertFalse(err)
AssertionError: b'Exception in thread Thread-1:\nTraceback (most recent call last):\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/threading.py", line 1059, in _bootstrap_inner\n    self.run()\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/concurrent/futures/process.py", line 339, in run\n    self.add_call_item_to_queue()\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/concurrent/futures/process.py", line 394, in add_call_item_to_queue\n    self.call_queue.put(_CallItem(work_id,\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/multiprocessing/queues.py", line 94, in put\n    self._start_thread()\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/multiprocessing/queues.py", line 177, in _start_thread\n    self._thread.start()\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/threading.py", line 978, in start\n    _start_new_thread(self._bootstrap, ())\nRuntimeError: can\'t create new thread at interpreter shutdown\nTraceback (most recent call last):\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/multiprocessing/forkserver.py", line 274, in main\n    code = _serve_one(child_r, fds,\n           ^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/multiprocessing/forkserver.py", line 313, in _serve_one\n    code = spawn._main(child_r, parent_sentinel)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/multiprocessing/spawn.py", line 132, in _main\n    self = reduction.pickle.load(from_parent)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/var/lib/buildbot/workers/3.x.gps-raspbian.nondebug/build/Lib/multiprocessing/synchronize.py", line 115, in __setstate__\n    self._semlock = _multiprocessing.SemLock._rebuild(*state)\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nFileNotFoundError: [Errno 2] No such file or directory\n' is not false

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

Successfully merging this pull request may close these issues.

3 participants