Issue44297
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-06-03 01:51 by vstinner, last changed 2022-04-11 14:59 by admin. This issue is now closed.
Pull Requests | |||
---|---|---|---|
URL | Status | Linked | Edit |
PR 26801 | merged | Mark.Shannon, 2021-06-19 11:45 | |
PR 26821 | merged | Mark.Shannon, 2021-06-21 10:02 | |
PR 26890 | merged | Mark.Shannon, 2021-06-24 09:30 | |
PR 26891 | merged | Mark.Shannon, 2021-06-24 09:37 |
Messages (16) | |||
---|---|---|---|
msg394969 - (view) | Author: STINNER Victor (vstinner) * ![]() |
Date: 2021-06-03 01:51 | |
While debugging https://bugs.python.org/issue43921 on Windows, I got a traceback with a single frame and the frame line number is -1. It looks like a Python 3.11 regression. Mark, Guido: can it be related to recent optimization work done in the main branch? See also bpo-44288 "unittest: _is_relevant_tb_level() fails because tb.tb_frame.f_globals=None". ====================================================================== FAIL: test_pha_required_nocert (test.test_ssl.TestPostHandshakeAuth) ---------------------------------------------------------------------- ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2522) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\vstinner\python\main\lib\test\test_ssl.py", line -1, in test_pha_required_nocert AssertionError: "certificate required" does not match "EOF occurred in violation of protocol (_ssl.c:2522)" |
|||
msg395209 - (view) | Author: Dominic Davis-Foster (domdfcoding) * | Date: 2021-06-06 18:12 | |
Is this a re-regression of https://bugs.python.org/issue43933? |
|||
msg396110 - (view) | Author: Anthony Sottile (Anthony Sottile) * | Date: 2021-06-19 00:15 | |
this appears to have regressed in 3.10 as well according to some reports on pytest: https://github.com/pytest-dev/pytest/pull/8227#issuecomment-864327090 |
|||
msg396111 - (view) | Author: Anthony Sottile (Anthony Sottile) * | Date: 2021-06-19 00:30 | |
here's the traceback pytest is trying to display and crashing: ``` Traceback (most recent call last): File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/runner.py", line 311, in from_call result: Optional[TResult] = func() File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/runner.py", line 341, in <lambda> call = CallInfo.from_call(lambda: list(collector.collect()), "collect") File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/python.py", line 503, in collect self._inject_setup_module_fixture() File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/python.py", line 516, in _inject_setup_module_fixture self.obj, ("setUpModule", "setup_module") File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/python.py", line 291, in obj self._obj = obj = self._getobj() File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/python.py", line 500, in _getobj return self._importtestmodule() File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/python.py", line 578, in _importtestmodule mod = import_path(self.fspath, mode=importmode) File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/pathlib.py", line 524, in import_path importlib.import_module(module_name) File "/home/asottile/workspace/cpython/prefix/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "/tmp/rinohtype/venv/lib/python3.10/site-packages/_pytest/assertion/rewrite.py", line 170, in exec_module exec(co, module.__dict__) File "/tmp/rinohtype/tests/test_attribute.py", line 11, in <module> from rinoh.attribute import Attribute, Bool File "/tmp/rinohtype/venv/lib/python3.10/site-packages/rinoh/__init__.py", line 41, in <module> from . import resource File "/tmp/rinohtype/venv/lib/python3.10/site-packages/rinoh/resource.py", line 205, in <module> from .template import DocumentTemplate File "/tmp/rinohtype/venv/lib/python3.10/site-packages/rinoh/template.py", line 42, in <module> from .stylesheets import sphinx File "/tmp/rinohtype/venv/lib/python3.10/site-packages/rinoh/stylesheets/__init__.py", line 42, in <module> .format(stylesheet.description, stylesheet)) File "/tmp/rinohtype/venv/lib/python3.10/site-packages/rinoh/style.py", line 670, in __str__ for name, entry_point in self.installed_resources: File "/tmp/rinohtype/venv/lib/python3.10/site-packages/rinoh/resource.py", line 54, in installed_resources for entry_point in ilm.entry_points()[cls.entry_point_group]: File "/home/asottile/workspace/cpython/prefix/lib/python3.10/importlib/metadata/__init__.py", line 979, in entry_points return SelectableGroups.load(eps).select(**params) File "/home/asottile/workspace/cpython/prefix/lib/python3.10/importlib/metadata/__init__.py", line 437, in load ordered = sorted(eps, key=by_group) File "/home/asottile/workspace/cpython/prefix/lib/python3.10/importlib/metadata/__init__.py", line -1, in <genexpr> File "/home/asottile/workspace/cpython/prefix/lib/python3.10/importlib/metadata/_itertools.py", line 16, in unique_everseen k = key(element) File "/home/asottile/workspace/cpython/prefix/lib/python3.10/importlib/metadata/__init__.py", line 600, in _normalized_name return Prepared.normalize(self.name) File "/home/asottile/workspace/cpython/prefix/lib/python3.10/importlib/metadata/__init__.py", line 841, in normalize return re.sub(r"[-_.]+", "-", name).lower().replace('-', '_') File "/home/asottile/workspace/cpython/prefix/lib/python3.10/re.py", line 187, in sub return _compile(pattern, flags).sub(repl, string, count) TypeError: expected string or bytes-like object ``` |
|||
msg396118 - (view) | Author: Anthony Sottile (Anthony Sottile) * | Date: 2021-06-19 06:30 | |
here is a minimal reproduction: ```python def iterboom(): raise AssertionError yield 1 next(1 for x in iterboom()) ``` python 3.9: ``` $ python3.9 t.py Traceback (most recent call last): File "/tmp/rinohtype/t.py", line 5, in <module> next(1 for x in iterboom()) File "/tmp/rinohtype/t.py", line 5, in <genexpr> next(1 for x in iterboom()) File "/tmp/rinohtype/t.py", line 2, in iterboom raise AssertionError AssertionError ``` ``` $ python3.10 t.py Traceback (most recent call last): File "/tmp/rinohtype/t.py", line 5, in <module> next(1 for x in iterboom()) File "/tmp/rinohtype/t.py", line -1, in <genexpr> File "/tmp/rinohtype/t.py", line 2, in iterboom raise AssertionError AssertionError ``` |
|||
msg396128 - (view) | Author: Mark Shannon (Mark.Shannon) * ![]() |
Date: 2021-06-19 11:25 | |
Thanks Anthony, that's a big help. |
|||
msg396216 - (view) | Author: Mark Shannon (Mark.Shannon) * ![]() |
Date: 2021-06-21 09:55 | |
New changeset 82e5c28af7049c4f5343c808f172cbe2e145f49b by Mark Shannon in branch 'main': bpo-44297: Fix missing line number in generator expressions (GH-26801) https://github.com/python/cpython/commit/82e5c28af7049c4f5343c808f172cbe2e145f49b |
|||
msg396224 - (view) | Author: Mark Shannon (Mark.Shannon) * ![]() |
Date: 2021-06-21 10:47 | |
New changeset 7674c83d81905d6afe989ca3f93f08b7939b057c by Mark Shannon in branch '3.10': bpo-44297: Fix missing line number in generator expressions (GH-26821) https://github.com/python/cpython/commit/7674c83d81905d6afe989ca3f93f08b7939b057c |
|||
msg396255 - (view) | Author: STINNER Victor (vstinner) * ![]() |
Date: 2021-06-21 15:42 | |
Can the issue be closed? I'm not sure which assertion failed in test_ssl.test_pha_required_nocert(). I bet on this one: with self.assertRaisesRegex( ssl.SSLError, '(certificate required|EOF occurred)' ): I don't know if the commit 82e5c28af7049c4f5343c808f172cbe2e145f49b is supported is to fix issue or not. |
|||
msg396257 - (view) | Author: STINNER Victor (vstinner) * ![]() |
Date: 2021-06-21 15:44 | |
Oh, I can still reproduce the issue on the main branch with this patch: diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index cee97a8302..3f66818ae1 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -4499,7 +4499,7 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): # server aborts connection with an error. with self.assertRaisesRegex( ssl.SSLError, - '(certificate required|EOF occurred)' + 'xxxxxxxxxxxxx' ): # receive CertificateRequest data = s.recv(1024) $ ./python -m test test_ssl -m test_pha_required_nocert -v (...) FAIL: test_pha_required_nocert (test.test_ssl.TestPostHandshakeAuth) ---------------------------------------------------------------------- (...) Traceback (most recent call last): File "/home/vstinner/python/main/Lib/test/test_ssl.py", line -1, in test_pha_required_nocert AssertionError: (...) ... => "line -1" |
|||
msg396361 - (view) | Author: Shreyan Avigyan (shreyanavigyan) * | Date: 2021-06-22 20:09 | |
Here presumably the error is occurring somewhere near unittest. I've tested this and wrote a minimal reproducible example. ``` import unittest class TestingError(unittest.TestCase): def test_negative_one(self): with self.assertRaisesRegex(AssertionError, "xxxxx"): self.assertEqual(1, 2) ``` Running this with `unittest discover` or in any other command-line way (like -c) results in frame with -1 while running it from script (with unittest.main probably) does not. Hope this helps. |
|||
msg396389 - (view) | Author: Shreyan Avigyan (shreyanavigyan) * | Date: 2021-06-23 08:59 | |
Oh it is also occurring when running from script (I ran it from IDLE and it always results in correct lineno). I wrote example similar to how unittests work and the frame with -1 lineno is also occurring there. Here is the code - ``` class A: def __enter__(self): return self def __exit__(self, *args, **kwargs): raise Exception("Frame is -1 if program is run from command line") with A(): raise Exception("Normal Error") ``` Also, unsurprisingly, pdb fails with a "TypeError: '>=' not supported between instances of 'NoneType' and 'int'". Full pdb log - Traceback (most recent call last): File "C:\Users\shrey\Desktop\line_negative_one.py", line -1, in <module> File "C:\github\cpython\lib\bdb.py", line 96, in trace_dispatch return self.dispatch_exception(frame, arg) File "C:\github\cpython\lib\bdb.py", line 169, in dispatch_exception if self.stop_here(frame): File "C:\github\cpython\lib\bdb.py", line 212, in stop_here return frame.f_lineno >= self.stoplineno TypeError: '>=' not supported between instances of 'NoneType' and 'int' |
|||
msg396430 - (view) | Author: Mark Shannon (Mark.Shannon) * ![]() |
Date: 2021-06-23 15:57 | |
Thanks for the reproducer. |
|||
msg396456 - (view) | Author: Shreyan Avigyan (shreyanavigyan) * | Date: 2021-06-24 07:03 | |
Found the culprit - https://github.com/python/cpython/blob/769d7d0c66c5b86e2dd29b9ce67ac2daaab1bb38/Python/compile.c#L5268 Same goes for async with - https://github.com/python/cpython/blob/769d7d0c66c5b86e2dd29b9ce67ac2daaab1bb38/Python/compile.c#L5171 (Didn't test async with so I can be wrong there.) Is this intentional? I removed these lines and the line number is coming correct. Can changing this affect other use cases? Without the change: Traceback (most recent call last): File "C:\Users\shrey\Desktop\line_negative_one.py", line 8, in <module> raise Exception("Normal Error") Exception: Normal Error During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\shrey\Desktop\line_negative_one.py", line -1, in <module> File "C:\Users\shrey\Desktop\line_negative_one.py", line 5, in __exit__ raise Exception("Frame is -1 if program is run from command line") Exception: Frame is -1 if program is run from command line With the change: Traceback (most recent call last): File "C:\Users\shrey\Desktop\line_negative_one.py", line 8, in <module> raise Exception("Normal Error") Exception: Normal Error During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\shrey\Desktop\line_negative_one.py", line 7, in <module> with A(): File "C:\Users\shrey\Desktop\line_negative_one.py", line 5, in __exit__ raise Exception("Frame is -1 if program is run from command line") Exception: Frame is not -1 anymore if program is run from command line |
|||
msg396475 - (view) | Author: Pablo Galindo Salgado (pablogsal) * ![]() |
Date: 2021-06-24 12:09 | |
New changeset 0b6b2865187bca7ed7f1f511a02fc8bd13ee38ca by Mark Shannon in branch '3.10': bpo-44297: Add a regression test for line numbers in with statements (GH-26891) https://github.com/python/cpython/commit/0b6b2865187bca7ed7f1f511a02fc8bd13ee38ca |
|||
msg399501 - (view) | Author: Mark Shannon (Mark.Shannon) * ![]() |
Date: 2021-08-13 08:27 | |
I believe this to be fixed. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:59:46 | admin | set | github: 88463 |
2021-08-13 08:27:24 | Mark.Shannon | set | status: open -> closed resolution: fixed messages: + msg399501 stage: patch review -> resolved |
2021-06-24 12:09:21 | pablogsal | set | messages: + msg396475 |
2021-06-24 09:37:18 | Mark.Shannon | set | pull_requests: + pull_request25468 |
2021-06-24 09:30:59 | Mark.Shannon | set | pull_requests: + pull_request25467 |
2021-06-24 07:03:44 | shreyanavigyan | set | messages: + msg396456 |
2021-06-23 15:57:52 | Mark.Shannon | set | assignee: Mark.Shannon messages: + msg396430 |
2021-06-23 08:59:12 | shreyanavigyan | set | messages: + msg396389 |
2021-06-22 20:09:50 | shreyanavigyan | set | nosy:
+ shreyanavigyan messages: + msg396361 |
2021-06-21 15:44:33 | vstinner | set | messages: + msg396257 |
2021-06-21 15:42:17 | vstinner | set | messages: + msg396255 |
2021-06-21 10:47:44 | Mark.Shannon | set | messages: + msg396224 |
2021-06-21 10:02:09 | Mark.Shannon | set | pull_requests: + pull_request25402 |
2021-06-21 09:55:30 | Mark.Shannon | set | messages: + msg396216 |
2021-06-19 11:45:20 | Mark.Shannon | set | keywords:
+ patch stage: patch review pull_requests: + pull_request25382 |
2021-06-19 11:25:35 | Mark.Shannon | set | messages: + msg396128 |
2021-06-19 06:30:39 | Anthony Sottile | set | messages: + msg396118 |
2021-06-19 00:30:43 | Anthony Sottile | set | messages: + msg396111 |
2021-06-19 00:15:38 | Anthony Sottile | set | nosy:
+ Anthony Sottile, pablogsal messages: + msg396110 versions: + Python 3.10 |
2021-06-06 18:12:37 | domdfcoding | set | nosy:
+ domdfcoding messages: + msg395209 |
2021-06-03 01:51:01 | vstinner | create |