bpo-46841: Use inline caching for attribute accesses by brandtbucher · Pull Request #31640 · python/cpython
Marking as
DO-NOT-MERGEsinceLOAD_ATTR_MODULEis somehow causing assertion failures and unclosed resources intest_asyncio:Details
/home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=8 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=10 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=8 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/base_events.py:684: ResourceWarning: unclosed event loop <_UnixSelectorEventLoop running=False closed=False debug=False> _warn(f"unclosed event loop {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=9 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=10 mode='wb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=9 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed <socket.socket fd=6, family=1, type=1, proto=0> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=7 mode='wb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=7 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=7 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=7 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=12 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=14 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=11 mode='wb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=11 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/base_events.py:684: ResourceWarning: unclosed event loop <_UnixSelectorEventLoop running=False closed=False debug=False> _warn(f"unclosed event loop {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=13 mode='wb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=12 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed <socket.socket fd=11, family=1, type=1, proto=0> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=12 mode='wb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=12 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=13 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=13 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=18 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=20 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=17 mode='wb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=17 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/base_events.py:684: ResourceWarning: unclosed event loop <_UnixSelectorEventLoop running=False closed=False debug=False> _warn(f"unclosed event loop {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=19 mode='wb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=18 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed <socket.socket fd=17, family=1, type=1, proto=0> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/support/__init__.py:705: ResourceWarning: unclosed file <_io.FileIO name=18 mode='wb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=18 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/test/test_asyncio/test_streams.py:40: ResourceWarning: unclosed file <_io.FileIO name=19 mode='rb' closefd=True> gc.collect() ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=19 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=21 idle bufsize=0> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/events.py:80: ResourceWarning: unclosed file <_io.FileIO name=22 mode='rb' closefd=True> self._context.run(self._callback, *self._args) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/events.py:80: ResourceWarning: unclosed file <_io.FileIO name=24 mode='rb' closefd=True> self._context.run(self._callback, *self._args) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=22 mode='rb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=24 mode='rb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=21 mode='wb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=21 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=25 mode='rb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=27 mode='rb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=23 mode='wb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=23 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=28 mode='rb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=26 mode='wb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=26 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=29 mode='wb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=29 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=31 mode='rb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/traceback.py:900: ResourceWarning: unclosed file <_io.FileIO name=30 mode='wb' closefd=True> for msg, exc in reversed(output): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=30 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=23 mode='rb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=21 mode='wb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=21 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=24 mode='rb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=26 mode='rb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=22 mode='wb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=22 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=27 mode='rb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=25 mode='wb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=25 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=19 mode='rb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=19 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:1151: ResourceWarning: unclosed file <_io.FileIO name=28 mode='rb' closefd=True> with self._lock: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:561: ResourceWarning: unclosed transport <_UnixReadPipeTransport fd=28 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=27 idle bufsize=0> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/events.py:80: ResourceWarning: unclosed file <_io.FileIO name=28 mode='rb' closefd=True> self._context.run(self._callback, *self._args) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/events.py:80: ResourceWarning: unclosed file <_io.FileIO name=30 mode='rb' closefd=True> self._context.run(self._callback, *self._args) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=21 mode='wb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=23 mode='rb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=25 mode='rb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=22 mode='wb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=26 mode='rb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=24 mode='wb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=24 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=28 mode='rb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=30 mode='rb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=27 mode='wb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=27 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=31 mode='rb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=35 mode='rb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=29 mode='wb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=29 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=36 mode='rb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/textwrap.py:482: ResourceWarning: unclosed file <_io.FileIO name=33 mode='wb' closefd=True> def prefixed_lines(): ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/brandtbucher/cpython/Lib/asyncio/unix_events.py:760: ResourceWarning: unclosed transport <_UnixWritePipeTransport fd=33 open> _warn(f"unclosed transport {self!r}", ResourceWarning, source=self) ResourceWarning: Enable tracemalloc to get the object allocation traceback python: Python/ceval.c:5334: _PyEval_EvalFrameDefault: Assertion `frame->frame_obj == NULL' failed. Fatal Python error: Aborted Current thread 0x00007f0d476a3280 (most recent call first): File "/home/brandtbucher/cpython/Lib/textwrap.py", line 482 in prefixed_lines File "/home/brandtbucher/cpython/Lib/textwrap.py", line 485 in indent File "/home/brandtbucher/cpython/Lib/traceback.py", line 629 in emit File "/home/brandtbucher/cpython/Lib/traceback.py", line 907 in format File "/home/brandtbucher/cpython/Lib/traceback.py", line 140 in format_exception File "/home/brandtbucher/cpython/Lib/test/support/testresult.py", line 92 in __makeErrorDict File "/home/brandtbucher/cpython/Lib/test/support/testresult.py", line 102 in addError File "/home/brandtbucher/cpython/Lib/unittest/case.py", line 99 in _addError File "/home/brandtbucher/cpython/Lib/unittest/case.py", line 74 in testPartExecutor File "/home/brandtbucher/cpython/Lib/contextlib.py", line 155 in __exit__ File "/home/brandtbucher/cpython/Lib/unittest/case.py", line 590 in run File "/home/brandtbucher/cpython/Lib/unittest/case.py", line 646 in __call__ File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 122 in run File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 84 in __call__ File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 122 in run File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 84 in __call__ File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 122 in run File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 84 in __call__ File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 122 in run File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 84 in __call__ File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 122 in run File "/home/brandtbucher/cpython/Lib/unittest/suite.py", line 84 in __call__ File "/home/brandtbucher/cpython/Lib/test/support/testresult.py", line 140 in run File "/home/brandtbucher/cpython/Lib/test/support/__init__.py", line 1064 in _run_suite File "/home/brandtbucher/cpython/Lib/test/support/__init__.py", line 1190 in run_unittest File "/home/brandtbucher/cpython/Lib/test/libregrtest/runtest.py", line 273 in _test_module File "/home/brandtbucher/cpython/Lib/test/libregrtest/runtest.py", line 309 in _runtest_inner2 File "/home/brandtbucher/cpython/Lib/test/libregrtest/runtest.py", line 352 in _runtest_inner File "/home/brandtbucher/cpython/Lib/test/libregrtest/runtest.py", line 227 in _runtest File "/home/brandtbucher/cpython/Lib/test/libregrtest/runtest.py", line 257 in runtest File "/home/brandtbucher/cpython/Lib/test/libregrtest/runtest_mp.py", line 84 in run_tests_worker File "/home/brandtbucher/cpython/Lib/test/libregrtest/main.py", line 678 in _main File "/home/brandtbucher/cpython/Lib/test/libregrtest/main.py", line 658 in main File "/home/brandtbucher/cpython/Lib/test/libregrtest/main.py", line 736 in main File "/home/brandtbucher/cpython/Lib/test/regrtest.py", line 43 in _main File "/home/brandtbucher/cpython/Lib/test/regrtest.py", line 47 in <module> File "<frozen runpy>", line 88 in _run_code File "<frozen runpy>", line 198 in _run_module_as_main
Okay, that was officially the wildest bug I've ever dealt with.
The problematic bytecode sequence (buried deep in asyncio) was:
LOAD_ATTR
[CACHE]
[CACHE]
[CACHE]
[CACHE]
LOAD_FAST
LOAD_ATTR
Quickened:
LOAD_ATTR_ADAPTIVE
[CACHE]
[CACHE]
[CACHE]
[CACHE]
LOAD_FAST
LOAD_ATTR_ADAPTIVE
After specializating the first LOAD_ATTR_ADAPTIVE:
LOAD_ATTR_MODULE
[<counter>]
[<version[0]>]
[<version[1]>]
[<index>]
LOAD_FAST
LOAD_ATTR_ADAPTIVE
Finally, after specializing the second LOAD_ATTR_ADAPTIVE:
LOAD_ATTR_MODULE
[<counter>]
[<version[0]>]
[<version[1]>]
[LOAD_FAST]
LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE
LOAD_ATTR_INSTANCE_VALUE
Did you catch that? The cached index was turned into a LOAD_FAST!
The code that did that is here. Basically, the low byte of the cached index just happened to be LOAD_FAST__LOAD_FAST, so the LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE specialization code changed it "back" into a LOAD_FAST.
What it really did, though, was change the module attribute cached index from 169 to 124. This also just happened to be a valid index into the os module's __dict__, and on subsequent runs the code ended up calling os.mknod(self._fileno, False) instead of os.set_blocking(self._fileno, False). This silently "works", and causes the code to leak tons of resources and break later in more subtle ways.
Phew.