Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MPIR large numbers give a segmentation fault #15363

Closed
jdemeyer opened this issue Nov 6, 2013 · 12 comments
Closed

MPIR large numbers give a segmentation fault #15363

jdemeyer opened this issue Nov 6, 2013 · 12 comments

Comments

@jdemeyer
Copy link

jdemeyer commented Nov 6, 2013

sage: 2^9223372036854775806
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-9-da1ea00f776d> in <module>()
----> 1 Integer(2)**Integer(9223372036854775806)

/scratch/release/merger/sage-5.12/local/lib/python2.7/site-packages/sage/rings/integer.so in sage.rings.integer.Integer.__pow__ (sage/rings/integer.c:14022)()

RuntimeError: Segmentation fault

This is essentially due to MPIR not checking for errors in malloc() (nor does it have a mechanism for returning errors to the user).

This could be "solved" within Sage by adding checking in sage_mpir_malloc() and friends.

Depends on #14029
Depends on #13311
Depends on #9640

CC: @zimmermann6

Component: c_lib

Author: Jeroen Demeyer

Reviewer: Paul Zimmermann

Merged: sage-5.13.beta3

Issue created by migration from https://trac.sagemath.org/ticket/15363

@jdemeyer jdemeyer added this to the sage-5.13 milestone Nov 6, 2013
@jdemeyer

This comment has been minimized.

@jdemeyer jdemeyer changed the title Segfault in exact_rational for RR MPIR large numbers give a segmentation fault Nov 6, 2013
@jdemeyer

This comment has been minimized.

@jdemeyer
Copy link
Author

jdemeyer commented Nov 6, 2013

Author: Jeroen Demeyer

@jdemeyer
Copy link
Author

jdemeyer commented Nov 6, 2013

Dependencies: #9640

@jdemeyer
Copy link
Author

jdemeyer commented Nov 8, 2013

comment:4

Attachment: 15363_mpir_malloc.patch.gz

@zimmermann6
Copy link

comment:5

after importing the patch in Sage 5.12, I get with sage -br:

┌────────────────────────────────────────────────────────────────────┐
│ Sage Version 5.12, Release Date: 2013-10-07                        │
│ Type "notebook()" for the browser-based notebook interface.        │
│ Type "help()" for help.                                            │
└────────────────────────────────────────────────────────────────────┘
Traceback (most recent call last):
  File "/localdisk/tmp/sage-5.12/local/bin/sage-ipython", line 6, in <module>
    from sage.misc.interpreter import SageTerminalApp
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/interpreter.py", line 67, in <module>
    import os, log, re, new, sys
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/log.py", line 66, in <module>
    import misc
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/misc.py", line 39, in <module>
    import sage.misc.prandom as random
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/prandom.py", line 58, in <module>
    from sage.misc.randstate import current_randstate
ImportError: /localdisk/tmp/sage-5.12/local/lib/libcsage.so: undefined symbol: sig_error
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/localdisk/tmp/sage-5.12/local/lib/python/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/temporary_file.py", line 51, in delete_tmpfiles
    from sage.misc.misc import SAGE_TMP
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/misc.py", line 39, in <module>
    import sage.misc.prandom as random
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/prandom.py", line 58, in <module>
    from sage.misc.randstate import current_randstate
ImportError: /localdisk/tmp/sage-5.12/local/lib/libcsage.so: undefined symbol: sig_error
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/localdisk/tmp/sage-5.12/local/lib/python/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/temporary_file.py", line 51, in delete_tmpfiles
    from sage.misc.misc import SAGE_TMP
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/misc.py", line 39, in <module>
    import sage.misc.prandom as random
  File "/localdisk/tmp/sage-5.12/local/lib/python2.7/site-packages/sage/misc/prandom.py", line 58, in <module>
    from sage.misc.randstate import current_randstate
ImportError: /localdisk/tmp/sage-5.12/local/lib/libcsage.so: undefined symbol: sig_error

Paul

@jdemeyer
Copy link
Author

jdemeyer commented Nov 9, 2013

comment:6

Did you apply the dependency #9640?

@jdemeyer
Copy link
Author

jdemeyer commented Nov 9, 2013

Changed dependencies from #9640 to #14029, #13311, #9640

@zimmermann6
Copy link

comment:8

Did you apply the dependency #9640?

obviously not...

Paul

@zimmermann6
Copy link

comment:9

the example in the description no longer gives a Seg. fault, all doctests still pass,
I'm not an expert of the Python-C interface but nevertheless the patch looks fine to me,
thus I give a positive review.

Paul

@zimmermann6
Copy link

Reviewer: Paul Zimmermann

@jdemeyer
Copy link
Author

Merged: sage-5.13.beta3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants