#11741: pari.init_primes() can segfault for large input on many platforms
-----------------------------+----------------------------------------------
   Reporter:  rohana         |          Owner:  was            
       Type:  defect         |         Status:  positive_review
   Priority:  major          |      Milestone:  sage-4.7.2     
  Component:  number theory  |       Keywords:                 
Work_issues:                 |       Upstream:  N/A            
   Reviewer:                 |         Author:                 
     Merged:                 |   Dependencies:                 
-----------------------------+----------------------------------------------

Old description:

> Example on redhawk.math (worked fine for me on sage.math):
>
> {{{
> sage: nth_prime(10^11)
>   ***   not enough memory
> /home/ohanar/sage-4.7.1/local/lib/libcsage.so(print_backtrace+0x31)[0x7f8dd66da817]
> /home/ohanar/sage-4.7.1/local/lib/libcsage.so(sigdie+0x14)[0x7f8dd66da849]
> /home/ohanar/sage-4.7.1/local/lib/libcsage.so(sage_signal_handler+0x1d5)[0x7f8dd66da43b]
> /lib/libpthread.so.0(+0xf8f0)[0x7f8ddbac38f0]
> /lib/libc.so.6(gsignal+0x35)[0x7f8ddb0daa75]
> /lib/libc.so.6(abort+0x180)[0x7f8ddb0de5c0]
> /home/ohanar/sage-4.7.1/local/lib/libpari-
> gmp-2.4.so.3(+0x2f9089)[0x7f8dd5a10089]
> /home/ohanar/sage-4.7.1/local/lib/libpari-
> gmp-2.4.so.3(pari_err+0x299)[0x7f8dd5a0f1b9]
> /home/ohanar/sage-4.7.1/local/lib/libpari-
> gmp-2.4.so.3(initprimes0+0xca4)[0x7f8dd5823624]
> /home/ohanar/sage-4.7.1/local/lib/libpari-
> gmp-2.4.so.3(initprimes+0x54)[0x7f8dd58236e4]
> /home/ohanar/sage-4.7.1/local/lib/python2.6/site-
> packages/sage/libs/pari/gen.so(+0x24095)[0x7f8dcfddc095]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyObject_Call+0x53)[0x7f8ddbd18163]
> /home/ohanar/sage-4.7.1/local/lib/python2.6/site-
> packages/sage/libs/pari/gen.so(+0x5e89f)[0x7f8dcfe1689f]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x64de)[0x7f8ddbdbd89e]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x5ac8)[0x7f8ddbdbce88]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCode+0x32)[0x7f8ddbdbe342]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x6259)[0x7f8ddbdbd619]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x5ac8)[0x7f8ddbdbce88]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCode+0x32)[0x7f8ddbdbe342]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyRun_FileExFlags+0xb0)[0x7f8ddbdde4e0]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyRun_SimpleFileExFlags+0xdc)[0x7f8ddbdde6ac]
> /home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(Py_Main+0xb44)[0x7f8ddbdeab24]
> /lib/libc.so.6(__libc_start_main+0xfd)[0x7f8ddb0c5c4d]
> python[0x4006d9]
>
> ------------------------------------------------------------------------
> Unhandled SIGABRT: An abort() occurred in Sage.
> This probably occurred because a *compiled* component of Sage has a bug
> in it and is not properly wrapped with sig_on(), sig_off(). You might
> want to run Sage under gdb with 'sage -gdb' to debug this.
> Sage will now terminate.
> ------------------------------------------------------------------------
> /home/ohanar/sage-4.7.1/local/bin/sage-sage: line 301: 14413 Aborted
> }}}
>
> The issue lies in that pari.init_primes does is not wrapped in
> sig_on()/sig_off().
>
> I've attached a patch below which should fix this

New description:

 Example on redhawk.math (worked fine for me on sage.math):

 {{{
 sage: nth_prime(10^11)
   ***   not enough memory
 
/home/ohanar/sage-4.7.1/local/lib/libcsage.so(print_backtrace+0x31)[0x7f8dd66da817]
 /home/ohanar/sage-4.7.1/local/lib/libcsage.so(sigdie+0x14)[0x7f8dd66da849]
 
/home/ohanar/sage-4.7.1/local/lib/libcsage.so(sage_signal_handler+0x1d5)[0x7f8dd66da43b]
 /lib/libpthread.so.0(+0xf8f0)[0x7f8ddbac38f0]
 /lib/libc.so.6(gsignal+0x35)[0x7f8ddb0daa75]
 /lib/libc.so.6(abort+0x180)[0x7f8ddb0de5c0]
 /home/ohanar/sage-4.7.1/local/lib/libpari-
 gmp-2.4.so.3(+0x2f9089)[0x7f8dd5a10089]
 /home/ohanar/sage-4.7.1/local/lib/libpari-
 gmp-2.4.so.3(pari_err+0x299)[0x7f8dd5a0f1b9]
 /home/ohanar/sage-4.7.1/local/lib/libpari-
 gmp-2.4.so.3(initprimes0+0xca4)[0x7f8dd5823624]
 /home/ohanar/sage-4.7.1/local/lib/libpari-
 gmp-2.4.so.3(initprimes+0x54)[0x7f8dd58236e4]
 /home/ohanar/sage-4.7.1/local/lib/python2.6/site-
 packages/sage/libs/pari/gen.so(+0x24095)[0x7f8dcfddc095]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyObject_Call+0x53)[0x7f8ddbd18163]
 /home/ohanar/sage-4.7.1/local/lib/python2.6/site-
 packages/sage/libs/pari/gen.so(+0x5e89f)[0x7f8dcfe1689f]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x64de)[0x7f8ddbdbd89e]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x5ac8)[0x7f8ddbdbce88]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCode+0x32)[0x7f8ddbdbe342]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x6259)[0x7f8ddbdbd619]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x5ac8)[0x7f8ddbdbce88]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x524d)[0x7f8ddbdbc60d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8cd)[0x7f8ddbdbe26d]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyEval_EvalCode+0x32)[0x7f8ddbdbe342]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyRun_FileExFlags+0xb0)[0x7f8ddbdde4e0]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(PyRun_SimpleFileExFlags+0xdc)[0x7f8ddbdde6ac]
 
/home/ohanar/sage-4.7.1/local/lib/libpython2.6.so.1.0(Py_Main+0xb44)[0x7f8ddbdeab24]
 /lib/libc.so.6(__libc_start_main+0xfd)[0x7f8ddb0c5c4d]
 python[0x4006d9]

 ------------------------------------------------------------------------
 Unhandled SIGABRT: An abort() occurred in Sage.
 This probably occurred because a *compiled* component of Sage has a bug
 in it and is not properly wrapped with sig_on(), sig_off(). You might
 want to run Sage under gdb with 'sage -gdb' to debug this.
 Sage will now terminate.
 ------------------------------------------------------------------------
 /home/ohanar/sage-4.7.1/local/bin/sage-sage: line 301: 14413 Aborted
 }}}

 The issue lies in that `pari.init_primes()` does is not wrapped in
 `sig_on()`/`sig_off()`.

 I've attached a patch below which should fix this.

--

Comment(by leif):

 Hopefully PARI never changes the way the primes are initialized; otherwise
 this could become a quite dangerous doctest.

 Also, the call of `abort()` doesn't cause a segfault (at least not in the
 first place, as in the example given on redhawk).

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11741#comment:5>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to