Skip to content

SymPy RecursionError crashes Python with fastcache installed #42

@asmeurer

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.

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