#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.