Skip to content

SymPy RecursionError crashes Python with fastcache installed #42

Description

@asmeurer

Run this in SymPy commit 08a8d78c7876f3266c1714d32158791e14f17f1f (the bug will probably be fixed soon). With fastcache installed:

>>> from sympy import *
>>> oo**I
Fatal Python error: Cannot recover from stack overflow.

Current thread 0x00007fff77e81000 (most recent call first):
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/sympify.py", line 234 in sympify
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/sympify.py", line 355 in _sympify
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 957 in __eq__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 141 in __mul__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 402 in __mul__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 868 in __mul__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/evalf.py", line 1377 in evalf
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 77 in __sympifyit_wrapper
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/numbers.py", line 2474 in _eval_power
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/power.py", line 192 in __new__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/expr.py", line 151 in __pow__
  File "/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/core/decorators.py", line 118 in binary_op_wrapper
  ...
Abort trap: 6

This is with Python 3.5.

With fastcache not installed, it just gives a normal RecursionError without crashing Python.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions