-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
Segmentation fault for TypeVar("T", bound=Callable[..., "T"]) #16940
Labels
Comments
Here's the traceback if you use an uncompiled version of mypy from the Traceback(venv) (master) % mypy -c 'from typing import TypeVar, Callable; T = TypeVar("T", bound=Callable[..., "T"])' --show-traceback
<string>:1: error: INTERNAL ERROR -- Please try using mypy master on GitHub:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 1.10.0+dev.790e8a73d8671a41cae419b4ea07579bfb2bc292
Traceback (most recent call last):
File "/Users/alexw/dev/mypy/venv/bin/mypy", line 8, in <module>
sys.exit(console_entry())
File "/Users/alexw/dev/mypy/mypy/__main__.py", line 15, in console_entry
main()
File "/Users/alexw/dev/mypy/mypy/main.py", line 100, in main
res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
File "/Users/alexw/dev/mypy/mypy/main.py", line 182, in run_build
res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
File "/Users/alexw/dev/mypy/mypy/build.py", line 192, in build
result = _build(
File "/Users/alexw/dev/mypy/mypy/build.py", line 266, in _build
graph = dispatch(sources, manager, stdout)
File "/Users/alexw/dev/mypy/mypy/build.py", line 2942, in dispatch
process_graph(graph, manager)
File "/Users/alexw/dev/mypy/mypy/build.py", line 3340, in process_graph
process_stale_scc(graph, scc, manager)
File "/Users/alexw/dev/mypy/mypy/build.py", line 3435, in process_stale_scc
mypy.semanal_main.semantic_analysis_for_scc(graph, scc, manager.errors)
File "/Users/alexw/dev/mypy/mypy/semanal_main.py", line 93, in semantic_analysis_for_scc
process_top_levels(graph, scc, patches)
File "/Users/alexw/dev/mypy/mypy/semanal_main.py", line 220, in process_top_levels
deferred, incomplete, progress = semantic_analyze_target(
File "/Users/alexw/dev/mypy/mypy/semanal_main.py", line 349, in semantic_analyze_target
analyzer.refresh_partial(
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 599, in refresh_partial
self.refresh_top_level(node)
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 610, in refresh_top_level
self.accept(d)
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 6588, in accept
node.accept(self)
File "/Users/alexw/dev/mypy/mypy/nodes.py", line 1310, in accept
return visitor.visit_assignment_stmt(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 2890, in visit_assignment_stmt
if self.process_typevar_declaration(s):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 4122, in process_typevar_declaration
res = self.process_typevar_parameters(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 4264, in process_typevar_parameters
tv_arg = self.get_typevarlike_argument("TypeVar", param_name, param_value, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 4315, in get_typevarlike_argument
analyzed = self.expr_to_analyzed_type(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 6624, in expr_to_analyzed_type
return self.anal_type(
^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/semanal.py", line 6739, in anal_type
typ = typ.accept(a)
^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/types.py", line 964, in accept
return visitor.visit_unbound_type(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 267, in visit_unbound_type
typ = self.visit_unbound_type_nonoptional(t, defining_literal)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 407, in visit_unbound_type_nonoptional
special = self.try_analyze_special_unbound_type(t, fullname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 593, in try_analyze_special_unbound_type
return self.analyze_callable_type(t)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 1386, in analyze_callable_type
return ret.accept(self)
^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/types.py", line 1979, in accept
return visitor.visit_callable_type(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 1043, in visit_callable_type
variables=self.anal_var_defs(variables),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 1734, in anal_var_defs
return [self.anal_var_def(vd) for vd in var_defs]
^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 1724, in anal_var_def
upper_bound=var_def.upper_bound.accept(self),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/types.py", line 1979, in accept
<many lines...>
return visitor.visit_callable_type(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 1043, in visit_callable_type
variables=self.anal_var_defs(variables),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 1734, in anal_var_defs
return [self.anal_var_def(vd) for vd in var_defs]
^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 1724, in anal_var_def
upper_bound=var_def.upper_bound.accept(self),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/types.py", line 1979, in accept
return visitor.visit_callable_type(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 983, in visit_callable_type
with self.tvar_scope_frame():
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/typeanal.py", line 1577, in tvar_scope_frame
self.tvar_scope = self.tvar_scope.method_frame()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexw/dev/mypy/mypy/tvar_scope.py", line 90, in method_frame
return TypeVarLikeScope(self, False, None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Crash Report
mypy runs into a segfault when using a
TypeVar
like this:Traceback
Unfortunately, nothing useful shows up:
To Reproduce
Your Environment
mypy /tmp/err.py
mypy.ini
(and other config files): noneThe text was updated successfully, but these errors were encountered: