Opened 21 months ago

Closed 7 months ago

#13705 closed defect (fixed)

segfault in analytic_rank(algorithm='rubinstein')

Reported by: dimpase Owned by: cremona
Priority: major Milestone: sage-duplicate/invalid/wontfix
Component: elliptic curves Keywords: lcalc
Cc: cremona Merged in:
Authors: Reviewers: Jeroen Demeyer
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

apparently, PARI ungracefully runs out of memory on the following:

sage: e= elliptic_curves.rank(8)[0]
sage: e.analytic_rank(algorithm='rubinstein')
  ***   Warning: not enough memory, new stack 18446744073268923520.
...[lots of similar lines removed]
  ***   Warning: not enough memory, new stack 17179869183.
  ***   Warning:   ***   bug in PARI/GP (Segmentation Fault), please report
  ***   bug in PARI/GP (Segmentation Fault), please report
...[lots of similar lines removed]

certainly, this is a difficult elliptic curve to deal with, but still, segfault is a segfault. See the related sage-devel discussion.

Change History (8)

comment:1 Changed 21 months ago by dimpase

  • Cc cremona added

comment:2 Changed 21 months ago by cremona

As I said on sage-devel, this computation will require a very large number of L-series coefficients, so this does not surprise me. I think that the only sensible way out is for the analytic rank function to quit gracefully for curve like this.

comment:3 Changed 12 months ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:4 Changed 7 months ago by jdemeyer

  • Milestone changed from sage-6.1 to sage-duplicate/invalid/wontfix
  • Reviewers set to Jeroen Demeyer
  • Status changed from new to needs_review

I now get

  ***   Warning: not enough memory, new stack 3854339200.
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-1-d7407b95d583> in <module>()
----> 1 elliptic_curves.rank(Integer(8))[Integer(0)].analytic_rank(algorithm='rubinstein')

/usr/local/src/sage-2217/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_rational_field.pyc in analytic_rank(self, algorithm, leading_coefficient)
   1353                 return lcalc.analytic_rank(L=self)
   1354             except TypeError,msg:
-> 1355                 raise RuntimeError, "unable to compute analytic rank using rubinstein algorithm ('%s')"%msg
   1356         elif algorithm == 'sympow':
   1357             if leading_coefficient:

RuntimeError: unable to compute analytic rank using rubinstein algorithm ('unable to convert x (=) to an integer')

which is about the best one can hope...

I think this should be closed as "wontfix".

comment:5 Changed 7 months ago by jdemeyer

  • Status changed from needs_review to positive_review

comment:6 Changed 7 months ago by jdemeyer

Note also that the ticket reports a segmentation fault in lcalc, not Sage itself.

comment:7 Changed 7 months ago by cremona

I ran the code on 6.0 and it did not crash.

sage: elliptic_curves.rank(Integer(8))[Integer(0)].analytic_rank(algorithm='rubinstein')
  ***   Warning: not enough memory, new stack 18446744073268923520.
  ***   Warning: not enough memory, new stack 9223372036634461760.
 (similar lines)
         ***   Warning: not enough memory, new stack 274877906880.
  ***   Warning: new stack size = 137438953408 (131072.000 Mbytes).
0

which is not the correct analytic rank, but there is no segfault.

comment:8 Changed 7 months ago by vbraun

  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.