upiterbarg/mpmath

segmentation fault when calling the mpmath.mp.fraction(1,100).func(1000,None)

GoogleCodeExporter opened this issue · 2 comments

What steps will reproduce the problem?
1. make sure gmpy is installed
2. import mpmath
3. mpmath.mp.fraction(1,100).func(1000, 0xdead )

What is the expected output? What do you see instead?

  Some kind of exception. The python backend produces a KeyError

What version of the product are you using? On what operating system?
  Debian testing distribution
    python-mpmath = 0.17-1
    python-gmpy = 1.15-1

Please provide any additional information below.

When the type of the last parameter is not correct, (say None, or an integer) A 
segmentation fault happens, when using gmpy.

Original issue reported on code.google.com by and...@purdea.ro on 9 Feb 2013 at 2:47

The code in gmpy didn't properly check the rounding mode. If the rounding mode 
is not a string, gmpy would cause a segmentation fault. I just committed a 
patch to gmpy2 (the next major version of gmpy) that should fix the issue.

>>> import mpmath
>>> mpmath.mp.fraction(1,100).func(100,None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mpmath/ctx_mp.py", line 1184, in <lambda>
    return ctx.constant(lambda prec, rnd: from_rational(p, q, prec, rnd),
  File "mpmath/libmp/libmpf.py", line 468, in from_rational
    return mpf_div(from_int(p), from_int(q), prec, rnd)
  File "mpmath/libmp/libmpf.py", line 958, in mpf_div
    return normalize1(sign, quot, sexp-texp-extra, bitcount(quot), prec, rnd)
ValueError: invalid rounding mode specified
>>> 

Can you test the svn version of gmpy2? I have created issue 68 at 
code.google.com/p/gmpy/ to track this issue.

Original comment by casevh on 23 Feb 2013 at 6:36

Taking ownership....

Original comment by casevh on 23 Feb 2013 at 6:37

  • Changed state: Accepted