Skip to content

Visit + modern Python: maximum recursion depth exceeded #41029

@adamjstewart

Description

@adamjstewart

Steps to reproduce

> spack spec visit+python ^[email protected]:
==> Error: maximum recursion depth exceeded in comparison

Error message

> spack -d spec visit+python ^[email protected]:
...
Traceback (most recent call last):
  File "/Users/Adam/spack/bin/spack", line 52, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/Adam/spack/lib/spack/spack_installable/main.py", line 37, in main
    sys.exit(spack.main.main(argv))
             ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/main.py", line 1064, in main
    return _main(argv)
           ^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/main.py", line 1019, in _main
    return finish_parse_and_run(parser, cmd_name, args.command, env_format_error)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/main.py", line 1047, in finish_parse_and_run
    return _invoke_command(command, parser, args, unknown)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/main.py", line 648, in _invoke_command
    return_val = command(parser, args)
                 ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/cmd/spec.py", line 101, in spec
    concretized_specs = spack.cmd.parse_specs(args.specs, concretize=True)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/cmd/__init__.py", line 218, in parse_specs
    spec.concretize(tests=tests)  # implies normalize
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/spec.py", line 2987, in concretize
    self._new_concretize(tests)
  File "/Users/Adam/spack/lib/spack/spack/spec.py", line 2959, in _new_concretize
    result = solver.solve([self], tests=tests, allow_deprecated=allow_deprecated)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 3212, in solve
    result, _, _ = self.driver.solve(
                   ^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 990, in solve
    error_handler.raise_if_errors()
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 815, in raise_if_errors
    msg = self.message(errors)
          ^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 781, in message
    messages = [
               ^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 782, in <listcomp>
    f"  {idx+1: 2}. {self.handle_error(msg, *args)}"
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 775, in handle_error
    for c in self.get_cause_tree(cause):
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 743, in get_cause_tree
    return self._get_cause_tree(cause, conditions, condition_causes, set())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 720, in _get_cause_tree
    return [indent + local] + [
                              ^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 723, in <listcomp>
    for c in self._get_cause_tree(
             ^^^^^^^^^^^^^^^^^^^^^
...
# repeated many times
...
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 720, in _get_cause_tree
    return [indent + local] + [
                              ^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 723, in <listcomp>
    for c in self._get_cause_tree(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 717, in _get_cause_tree
    parents = [c for e, c in condition_causes if e == cause and c not in seen]
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Adam/spack/lib/spack/spack/solver/asp.py", line 717, in <listcomp>
    parents = [c for e, c in condition_causes if e == cause and c not in seen]
                                                 ^^^^^^^^^^
RecursionError: maximum recursion depth exceeded in comparison

Information on your system

  • Spack: 0.22.0.dev0 (15dcd3c)
  • Python: 3.11.6
  • Platform: darwin-sonoma-m2
  • Concretizer: clingo

@tgamblin this is the issue I mentioned.

@alalazo this seems similar to #40553 and #37947.

@cyrush when will VisIt support modern VTK? Python 3.8 reaches EOL next year.

General information

  • I have run spack debug report and reported the version of Spack/Python/Platform
  • I have searched the issues of this repo and believe this is not a duplicate
  • I have run the failing commands in debug mode and reported the output

Metadata

Metadata

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions