#19649: Crash in pari polroots()
--------------------------------------------+-------------------------
       Reporter:  kedlaya                   |        Owner:
           Type:  defect                    |       Status:  new
       Priority:  major                     |    Milestone:  sage-6.10
      Component:  interfaces                |   Resolution:
       Keywords:  pari, polynomials, roots  |    Merged in:
        Authors:  Jeroen Demeyer            |    Reviewers:
Report Upstream:  N/A                       |  Work issues:
         Branch:                            |       Commit:
   Dependencies:                            |     Stopgaps:
--------------------------------------------+-------------------------
Changes (by {'newvalue': u'Jeroen Demeyer', 'oldvalue': ''}):

 * author:   => Jeroen Demeyer


Old description:

> We've seen weird issues with pari.polroots before (e.g., #2418); this may
> be related. (Observed in Sage 6.9, on multiple platforms.)
> {{{
> sage: polRing.<x> = PolynomialRing(ZZ)
> sage: j = (x+1)^2 * (x-1)^7 * (x^2-x+1)^5
> sage: l = j.roots(CC)
> ---------------------------------------------------------------------------
> SignalError                               Traceback (most recent call
> last)
> <ipython-input-106-2450a50ef70a> in <module>()
> ----> 1 l = j.roots(CC)
>
> /home/kedlaya/sage-
> complete/src/sage/rings/polynomial/polynomial_element.pyx in
> sage.rings.polynomial.polynomial_element.Polynomial.roots
> (/home/kedlaya/Downloads/sage-6.9/src/build/cythonized/sage/rings/polynomial/polynomial_element.c:53329)()
>    6344                     real_field = RealField(L.prec())
>    6345
> -> 6346                 return self.change_ring(real_field).roots(ring=L,
> multiplicities=multiplicities, algorithm=algorithm)
>    6347             elif is_pAdicRing(L) or is_pAdicField(L):
>    6348                 p = L.prime()
>
> /home/kedlaya/sage-
> complete/src/sage/rings/polynomial/polynomial_element.pyx in
> sage.rings.polynomial.polynomial_element.Polynomial.roots
> (/home/kedlaya/Downloads/sage-6.9/src/build/cythonized/sage/rings/polynomial/polynomial_element.c:50813)()
>    6251                 if not input_arbprec:
>    6252                     self = self.change_ring(CC if input_complex
> else RR)
> -> 6253                 ext_rts = pari(self.monic()).polroots(precision =
> L.prec())
>    6254
>    6255             if output_complex:
>
> /home/kedlaya/sage-complete/src/sage/libs/pari/gen.pyx in
> sage.libs.pari.gen.gen.polroots
> (/home/kedlaya/Downloads/sage-6.9/src/build/cythonized/sage/libs/pari/gen.c:133557)()
>    8236             from sage.misc.superseded import deprecation
>    8237             deprecation(16997, 'The flag argument to polroots()
> is deprecated and not used anymore')
> -> 8238         pari_catch_sig_on()
>    8239         return P.new_gen(cleanroots(self.g,
> prec_bits_to_words(precision)))
>    8240
>
> /home/kedlaya/sage-complete/src/sage/ext/interrupt/interrupt.pyx in
> sage.ext.interrupt.interrupt.sig_raise_exception
> (/home/kedlaya/Downloads/sage-6.9/src/build/cythonized/sage/ext/interrupt/interrupt.c:1356)()
>     108         if msg == NULL:
>     109             msg = "Segmentation fault"
> --> 110         raise SignalError(msg)
>     111
>     112     raise SystemError("unknown signal number %s"%sig)
>
> SignalError: Segmentation fault
> }}}

New description:

 We've seen weird issues with pari.polroots before (e.g., #2418); this may
 be related. (Observed in Sage 6.9, on multiple platforms.)
 {{{
 sage: polRing.<x> = PolynomialRing(ZZ)
 sage: j = (x+1)^2 * (x-1)^7 * (x^2-x+1)^5
 sage: l = j.roots(CC)
 ---------------------------------------------------------------------------
 SignalError                               Traceback (most recent call
 last)
 <ipython-input-106-2450a50ef70a> in <module>()
 ----> 1 l = j.roots(CC)

 /home/kedlaya/sage-
 complete/src/sage/rings/polynomial/polynomial_element.pyx in
 sage.rings.polynomial.polynomial_element.Polynomial.roots
 
(/home/kedlaya/Downloads/sage-6.9/src/build/cythonized/sage/rings/polynomial/polynomial_element.c:53329)()
    6344                     real_field = RealField(L.prec())
    6345
 -> 6346                 return self.change_ring(real_field).roots(ring=L,
 multiplicities=multiplicities, algorithm=algorithm)
    6347             elif is_pAdicRing(L) or is_pAdicField(L):
    6348                 p = L.prime()

 /home/kedlaya/sage-
 complete/src/sage/rings/polynomial/polynomial_element.pyx in
 sage.rings.polynomial.polynomial_element.Polynomial.roots
 
(/home/kedlaya/Downloads/sage-6.9/src/build/cythonized/sage/rings/polynomial/polynomial_element.c:50813)()
    6251                 if not input_arbprec:
    6252                     self = self.change_ring(CC if input_complex
 else RR)
 -> 6253                 ext_rts = pari(self.monic()).polroots(precision =
 L.prec())
    6254
    6255             if output_complex:

 /home/kedlaya/sage-complete/src/sage/libs/pari/gen.pyx in
 sage.libs.pari.gen.gen.polroots
 
(/home/kedlaya/Downloads/sage-6.9/src/build/cythonized/sage/libs/pari/gen.c:133557)()
    8236             from sage.misc.superseded import deprecation
    8237             deprecation(16997, 'The flag argument to polroots() is
 deprecated and not used anymore')
 -> 8238         pari_catch_sig_on()
    8239         return P.new_gen(cleanroots(self.g,
 prec_bits_to_words(precision)))
    8240

 /home/kedlaya/sage-complete/src/sage/ext/interrupt/interrupt.pyx in
 sage.ext.interrupt.interrupt.sig_raise_exception
 
(/home/kedlaya/Downloads/sage-6.9/src/build/cythonized/sage/ext/interrupt/interrupt.c:1356)()
     108         if msg == NULL:
     109             msg = "Segmentation fault"
 --> 110         raise SignalError(msg)
     111
     112     raise SystemError("unknown signal number %s"%sig)

 SignalError: Segmentation fault
 }}}

 Equivalent GP session:
 {{{
 gp> \p10
    realprecision = 19 significant digits (10 digits displayed)
 gp> polroots((x+1)^2 * (x-1)^7 * (x^2-x+1)^5 * 1.0)
   ***   at top-level: polroots((x+1)^2*(x-
   ***                 ^--------------------
   *** polroots: bug in PARI/GP (Segmentation Fault), please report.
 }}}

--

--
Ticket URL: <http://trac.sagemath.org/ticket/19649#comment:1>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to