Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1514356 - Sagemath crashes at startup
Summary: Sagemath crashes at startup
Keywords:
Status: CLOSED EOL
Alias: None
Product: Fedora
Classification: Fedora
Component: sagemath
Version: 26
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
Assignee: Paulo Andrade
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-11-17 08:28 UTC by Germano Massullo
Modified: 2018-05-29 12:17 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-05-29 12:17:58 UTC


Attachments (Terms of Use)

Description Germano Massullo 2017-11-17 08:28:48 UTC
Description of problem:
Sagemath crashes at startup

***************************************************************************

IPython post-mortem report

{'commit_hash': u'5c9c918',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': '/usr/lib64/sagemath/site-packages/IPython',
 'ipython_version': '5.1.0',
 'os_name': 'posix',
 'platform': 'Linux-4.13.9-200.fc26.x86_64-x86_64-with-fedora-26-Twenty_Six',
 'sys_executable': '/usr/lib64/sagemath/local/bin/python',
 'sys_platform': 'linux2',
 'sys_version': '2.7.13 (default, Sep  5 2017, 08:53:59) \n[GCC 7.1.1 20170622 (Red Hat 7.1.1-3)]'}

***************************************************************************



***************************************************************************

Crash traceback:

---------------------------------------------------------------------------
---------------------------------------------------------------------------
ImportError             Python 2.7.13: /usr/lib64/sagemath/local/bin/python
                                                   Fri Nov 17 09:26:24 2017
A problem occurred executing Python code.  Here is the sequence of function
calls leading up to the error, with the most recent (innermost) call last.
/usr/lib64/sagemath/local/bin/sage-ipython in <module>()
      1 #!/usr/bin/env python
      2 # -*- coding: utf-8 -*-
      3 """
      4 Sage IPython startup script.
      5 """
      6 
      7 from sage.repl.interpreter import SageTerminalApp
      8 
      9 app = SageTerminalApp.instance()
---> 10 app.initialize()
        global app.initialize = <bound method SageTerminalApp.initialize of <sage.repl.interpreter.SageTerminalApp object at 0x7f848fe45310>>
     11 app.start()

<decorator-gen-109> in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None)

/usr/lib/python2.7/site-packages/traitlets/config/application.pyc in catch_config_error(method=<function initialize>, app=<sage.repl.interpreter.SageTerminalApp object>, *args=(None,), **kwargs={})
     72     TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR = False
     73 else:
     74     raise ValueError("Unsupported value for environment variable: 'TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR' is set to '%s' which is none of  {'0', '1', 'false', 'true', ''}."% _envvar )
     75 
     76 
     77 @decorator
     78 def catch_config_error(method, app, *args, **kwargs):
     79     """Method decorator for catching invalid config (Trait/ArgumentErrors) during init.
     80 
     81     On a TraitError (generally caused by bad config), this will print the trait's
     82     message, and exit the app.
     83 
     84     For use on init methods, to prevent invoking excepthook on invalid input.
     85     """
     86     try:
---> 87         return method(app, *args, **kwargs)
        method = <function initialize at 0x7f8482202488>
        app = <sage.repl.interpreter.SageTerminalApp object at 0x7f848fe45310>
        args = (None,)
        kwargs = {}
     88     except (TraitError, ArgumentError) as e:
     89         app.print_help()
     90         app.log.fatal("Bad config encountered during initialization:")
     91         app.log.fatal(str(e))
     92         app.log.debug("Config at the time: %s", app.config)
     93         app.exit(1)
     94 
     95 
     96 class ApplicationError(Exception):
     97     pass
     98 
     99 
    100 class LevelFormatter(logging.Formatter):
    101     """Formatter with additional `highlevel` record
    102 

/usr/lib64/sagemath/site-packages/IPython/terminal/ipapp.pyc in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None)
    294 
    295         return super(TerminalIPythonApp, self).parse_command_line(argv)
    296     
    297     @catch_config_error
    298     def initialize(self, argv=None):
    299         """Do actions after construct, but before starting the app."""
    300         super(TerminalIPythonApp, self).initialize(argv)
    301         if self.subapp is not None:
    302             # don't bother initializing further, starting subapp
    303             return
    304         # print self.extra_args
    305         if self.extra_args and not self.something_to_run:
    306             self.file_to_run = self.extra_args[0]
    307         self.init_path()
    308         # create the shell
--> 309         self.init_shell()
        self.init_shell = <bound method SageTerminalApp.init_shell of <sage.repl.interpreter.SageTerminalApp object at 0x7f848fe45310>>
    310         # and draw the banner
    311         self.init_banner()
    312         # Now a variety of things that happen after the banner is printed.
    313         self.init_gui_pylab()
    314         self.init_extensions()
    315         self.init_code()
    316 
    317     def init_shell(self):
    318         """initialize the InteractiveShell instance"""
    319         # Create an InteractiveShell instance.
    320         # shell.display_banner should always be False for the terminal
    321         # based app, because we call shell.show_banner() by hand below
    322         # so the banner shows *before* all extension loading stuff.
    323         self.shell = TerminalInteractiveShell.instance(parent=self,
    324                         profile_dir=self.profile_dir,

/usr/lib64/python2.7/site-packages/sage/repl/interpreter.pyc in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>)
    747         self.shell.has_sage_extensions = SAGE_EXTENSION in self.extensions
    748 
    749         # Load the %lprun extension if available
    750         try:
    751             import line_profiler
    752         except ImportError:
    753             pass
    754         else:
    755             self.extensions.append('line_profiler')
    756 
    757         if self.shell.has_sage_extensions:
    758             self.extensions.remove(SAGE_EXTENSION)
    759 
    760             # load sage extension here to get a crash if
    761             # something is wrong with the sage library
--> 762             self.shell.extension_manager.load_extension(SAGE_EXTENSION)
        self.shell.extension_manager.load_extension = <bound method ExtensionManager.load_extension of <IPython.core.extensions.ExtensionManager object at 0x7f8480e6ae90>>
        global SAGE_EXTENSION = 'sage'
    763 
    764 

/usr/lib64/sagemath/site-packages/IPython/core/extensions.pyc in load_extension(self=<IPython.core.extensions.ExtensionManager object>, module_str='sage')
     70 
     71         Returns the string "already loaded" if the extension is already loaded,
     72         "no load function" if the module doesn't have a load_ipython_extension
     73         function, or None if it succeeded.
     74         """
     75         if module_str in self.loaded:
     76             return "already loaded"
     77         
     78         from IPython.utils.syspathcontext import prepended_to_syspath
     79         
     80         with self.shell.builtin_trap:
     81             if module_str not in sys.modules:
     82                 with prepended_to_syspath(self.ipython_extension_dir):
     83                     __import__(module_str)
     84             mod = sys.modules[module_str]
---> 85             if self._call_load_ipython_extension(mod):
        self._call_load_ipython_extension = <bound method ExtensionManager._call_load_ipython_extension of <IPython.core.extensions.ExtensionManager object at 0x7f8480e6ae90>>
        mod = <module 'sage' from '/usr/lib64/python2.7/site-packages/sage/__init__.pyc'>
     86                 self.loaded.add(module_str)
     87             else:
     88                 return "no load function"
     89 
     90     def unload_extension(self, module_str):
     91         """Unload an IPython extension by its module name.
     92 
     93         This function looks up the extension's name in ``sys.modules`` and
     94         simply calls ``mod.unload_ipython_extension(self)``.
     95         
     96         Returns the string "no unload function" if the extension doesn't define
     97         a function to unload itself, "not loaded" if the extension isn't loaded,
     98         otherwise None.
     99         """
    100         if module_str not in self.loaded:

/usr/lib64/sagemath/site-packages/IPython/core/extensions.pyc in _call_load_ipython_extension(self=<IPython.core.extensions.ExtensionManager object>, mod=<module 'sage' from '/usr/lib64/python2.7/site-packages/sage/__init__.pyc'>)
    117         """
    118         from IPython.utils.syspathcontext import prepended_to_syspath
    119 
    120         if (module_str in self.loaded) and (module_str in sys.modules):
    121             self.unload_extension(module_str)
    122             mod = sys.modules[module_str]
    123             with prepended_to_syspath(self.ipython_extension_dir):
    124                 reload(mod)
    125             if self._call_load_ipython_extension(mod):
    126                 self.loaded.add(module_str)
    127         else:
    128             self.load_extension(module_str)
    129 
    130     def _call_load_ipython_extension(self, mod):
    131         if hasattr(mod, 'load_ipython_extension'):
--> 132             mod.load_ipython_extension(self.shell)
        mod.load_ipython_extension = <function load_ipython_extension at 0x7f848fe39758>
        self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f8481fa2090>
    133             return True
    134 
    135     def _call_unload_ipython_extension(self, mod):
    136         if hasattr(mod, 'unload_ipython_extension'):
    137             mod.unload_ipython_extension(self.shell)
    138             return True
    139 
    140     def install_extension(self, url, filename=None):
    141         """Download and install an IPython extension. 
    142 
    143         If filename is given, the file will be so named (inside the extension
    144         directory). Otherwise, the name from the URL will be used. The file must
    145         have a .py or .zip extension; otherwise, a ValueError will be raised.
    146 
    147         Returns the full path to the installed file.

/usr/lib64/python2.7/site-packages/sage/__init__.pyc in load_ipython_extension(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,))
      1 __all__ = ['all']
      2 
      3 # IPython calls this when starting up
      4 def load_ipython_extension(*args):
      5     import sage.repl.ipython_extension
----> 6     sage.repl.ipython_extension.load_ipython_extension(*args)
        sage.repl.ipython_extension.load_ipython_extension = <function load_ipython_extension at 0x7f84809c3938>
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f8481fa2090>,)

/usr/lib64/python2.7/site-packages/sage/repl/ipython_extension.pyc in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,), **kwargs={})
    490         ....:     if work:
    491         ....:         return 'foo worked'
    492         ....:     raise RuntimeError("foo didn't work")
    493         sage: foo(False)
    494         Traceback (most recent call last):
    495         ...
    496         RuntimeError: foo didn't work
    497         sage: foo(True)
    498         'foo worked'
    499         sage: foo(False)
    500         sage: foo(True)
    501     """
    502     @wraps(func)
    503     def wrapper(*args, **kwargs):
    504         if not wrapper.has_run:
--> 505             result = func(*args, **kwargs)
        result = undefined
        global func = undefined
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f8481fa2090>,)
        kwargs = {}
    506             wrapper.has_run = True
    507             return result
    508     wrapper.has_run = False
    509     return wrapper
    510 
    511 
    512 @run_once
    513 def load_ipython_extension(ip):
    514     """
    515     Load the extension in IPython.
    516     """
    517     # this modifies ip
    518     SageCustomizations(shell=ip)

/usr/lib64/python2.7/site-packages/sage/repl/ipython_extension.pyc in load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    503     def wrapper(*args, **kwargs):
    504         if not wrapper.has_run:
    505             result = func(*args, **kwargs)
    506             wrapper.has_run = True
    507             return result
    508     wrapper.has_run = False
    509     return wrapper
    510 
    511 
    512 @run_once
    513 def load_ipython_extension(ip):
    514     """
    515     Load the extension in IPython.
    516     """
    517     # this modifies ip
--> 518     SageCustomizations(shell=ip)
        global SageCustomizations = <class 'sage.repl.ipython_extension.SageCustomizations'>
        global shell = undefined
        ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f8481fa2090>

/usr/lib64/python2.7/site-packages/sage/repl/ipython_extension.pyc in __init__(self=<sage.repl.ipython_extension.SageCustomizations object>, shell=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    361     def __init__(self, shell=None):
    362         """
    363         Initialize the Sage plugin.
    364         """
    365         self.shell = shell
    366 
    367         self.auto_magics = SageMagics(shell)
    368         self.shell.register_magics(self.auto_magics)
    369 
    370         import sage.misc.edit_module as edit_module
    371         self.shell.set_hook('editor', edit_module.edit_devel)
    372 
    373         self.init_inspector()
    374         self.init_line_transforms()
    375 
--> 376         import sage.all # until sage's import hell is fixed
        sage.all = undefined
    377 
    378         self.shell.verbose_quit = True
    379         self.set_quit_hook()
    380 
    381         self.register_interface_magics()
    382 
    383         if SAGE_IMPORTALL == 'yes':
    384             self.init_environment()
    385 
    386     def register_interface_magics(self):
    387         """
    388         Register magics for each of the Sage interfaces
    389         """
    390         from sage.repl.interface_magic import InterfaceMagic
    391         InterfaceMagic.register_all(self.shell)

/usr/lib64/python2.7/site-packages/sage/all.py in <module>()
     77 
     78 # Add SAGE_SRC at the end of sys.path to enable Cython tracebacks
     79 # (which use paths relative to SAGE_SRC)
     80 sys.path.append(SAGE_SRC)
     81 
     82 
     83 ###################################################################
     84 
     85 # This import also setups the interrupt handler
     86 from cysignals.signals import (AlarmInterrupt, SignalError,
     87         sig_on_reset as sig_on_count)
     88 
     89 from time                import sleep
     90 
     91 import sage.misc.lazy_import
---> 92 from sage.misc.all       import *         # takes a while
        global sage.misc.all = undefined
     93 from sage.typeset.all    import *
     94 from sage.repl.all       import *
     95 
     96 from sage.misc.sh import sh
     97 
     98 from sage.libs.all       import *
     99 from sage.data_structures.all import *
    100 from sage.doctest.all    import *
    101 
    102 from sage.structure.all  import *
    103 from sage.rings.all      import *
    104 from sage.arith.all      import *
    105 from sage.matrix.all     import *
    106 
    107 from sage.symbolic.all   import *

/usr/lib64/python2.7/site-packages/sage/misc/all.py in <module>()
     73 
     74 from .defaults import (set_default_variable_name,
     75                         series_precision, set_series_precision)
     76 
     77 from .sage_eval import sage_eval, sageobj
     78 
     79 from .sage_input import sage_input
     80 
     81 lazy_import("sage.misc.cython", ["cython_lambda", "cython_create_local_so"]) 
     82 lazy_import("sage.misc.cython_c", "cython_compile", "cython")
     83 
     84 from .persist import save, load, dumps, loads, db, db_save
     85 
     86 from .func_persist import func_persist
     87 
---> 88 from .functional import (additive_order,
        global functional = undefined
        global additive_order = undefined
        global base_ring = undefined
        global base_field = undefined
        global basis = undefined
        global category = undefined
        global charpoly = undefined
        global characteristic_polynomial = undefined
        global coerce = undefined
        global cyclotomic_polynomial = undefined
        global decomposition = undefined
        global denominator = undefined
        global det = undefined
        global dimension = undefined
        global dim = undefined
        global discriminant = undefined
        global disc = undefined
        global eta = undefined
        global fcp = undefined
        global gen = undefined
        global gens = undefined
        global hecke_operator = undefined
        global image = undefined
        global integral = undefined
        global integrate = undefined
        global integral_closure = undefined
        global interval = undefined
        global xinterval = undefined
        global is_commutative = undefined
        global is_even = undefined
        global is_integrally_closed = undefined
        global is_field = undefined
        global is_odd = undefined
        global kernel = undefined
        global krull_dimension = undefined
        global lift = undefined
        global log = undefined
        global log_b = undefined
        global minimal_polynomial = undefined
        global minpoly = undefined
        global multiplicative_order = undefined
        global ngens = undefined
        global norm = undefined
        global numerator = undefined
        global numerical_approx = undefined
        global n = undefined
        global N = undefined
        global objgens = undefined
        global objgen = undefined
        global order = undefined
        global rank = undefined
        global regulator = undefined
        global round = undefined
        global quotient = undefined
        global quo = undefined
        global isqrt = undefined
        global squarefree_part = undefined
        global symbolic_sum = undefined
        global sum = undefined
        global transpose = undefined
     89                         base_ring,
     90                         base_field,
     91                         basis,
     92                         category,
     93                         charpoly,
     94                         characteristic_polynomial,
     95                         coerce,
     96                         cyclotomic_polynomial,
     97                         decomposition,
     98                         denominator,
     99                         det,
    100                         dimension,
    101                         dim,
    102                         discriminant,
    103                         disc,

/usr/lib64/python2.7/site-packages/sage/misc/functional.py in <module>()
     17 #
     18 # This program is free software: you can redistribute it and/or modify
     19 # it under the terms of the GNU General Public License as published by
     20 # the Free Software Foundation, either version 2 of the License, or
     21 # (at your option) any later version.
     22 #                  http://www.gnu.org/licenses/
     23 #*****************************************************************************
     24 from __future__ import absolute_import
     25 from six.moves import range
     26 from six.moves import builtins
     27 
     28 import sage.misc.latex
     29 import sage.interfaces.expect
     30 import sage.interfaces.mathematica
     31 
---> 32 from sage.rings.complex_double import CDF
        global sage.rings.complex_double = undefined
        global CDF = undefined
     33 from sage.rings.real_double import RDF, RealDoubleElement
     34 
     35 import sage.rings.real_mpfr
     36 import sage.rings.complex_field
     37 import sage.rings.integer
     38 
     39 ##############################################################################
     40 # There are many functions on elements of a ring, which mathematicians
     41 # usually write f(x), e.g., it is weird to write x.log() and natural
     42 # to write log(x).  The functions below allow for the more familiar syntax.
     43 ##############################################################################
     44 def additive_order(x):
     45     """
     46     Returns the additive order of `x`.
     47 

/usr/lib64/python2.7/site-packages/sage/rings/integer.pxd in init sage.rings.complex_double (/builddir/build/BUILD/sage-7.6/src/build/cythonized/sage/rings/complex_double.c:23816)()
      1 from sage.libs.gmp.types cimport mpz_t, mpz_ptr
      2 from sage.libs.ntl.types cimport ZZ_c
      3 
      4 from sage.structure.element cimport EuclideanDomainElement, RingElement
      5 from sage.categories.morphism cimport Morphism
      6 
----> 7 cdef class Integer(EuclideanDomainElement):
        global cdef = undefined
        global Integer = undefined
        global EuclideanDomainElement = undefined
      8     cdef mpz_t value
      9 
     10     cdef int _to_ZZ(self, ZZ_c *z) except -1
     11     cdef void set_from_mpz(self, mpz_t value)
     12     cdef hash_c(self)
     13 
     14     cpdef _pari_(self)
     15 
     16     cpdef _shift_helper(Integer self, y, int sign)
     17     cdef _and(Integer self, Integer other)
     18     cdef _or(Integer self, Integer other)
     19     cdef _xor(Integer self, Integer other)
     20 
     21     cpdef size_t _exact_log_log2_iter(self,Integer m)
     22     cpdef size_t _exact_log_mpfi_log(self,m)
     23     cpdef RingElement _valuation(Integer self, Integer p)
     24     cdef object _val_unit(Integer self, Integer p)
     25     cdef Integer _divide_knowing_divisible_by(Integer self, Integer right)
     26     cdef bint _is_power_of(Integer self, Integer n)
     27 
     28     cdef bint _pseudoprime_is_prime(self, proof) except -1
     29     cpdef list _pari_divisors_small(self)
     30 
     31     cdef _reduce_set(self, s) # do not use, since integers are immutable.

/usr/lib64/python2.7/site-packages/sage/rings/rational.pxd in init sage.rings.integer (/builddir/build/BUILD/sage-7.6/src/build/cythonized/sage/rings/integer.c:50835)()
      1 from sage.libs.gmp.types cimport mpq_t
      2 
      3 cimport sage.structure.element
      4 cimport sage.rings.integer as integer
      5 
      6 cpdef rational_power_parts(a, b, factor_limit=?)
      7 
----> 8 cdef class Rational(sage.structure.element.FieldElement):
        global cdef = undefined
        global Rational = undefined
        global sage.structure.element.FieldElement = undefined
      9     cdef mpq_t value
     10 
     11     cdef __set_value(self, x, unsigned int base)
     12     cdef void set_from_mpq(Rational self, mpq_t value)
     13     cdef _lshift(self, long int exp)
     14     cdef _rshift(self, long int exp)
     15 
     16     cdef _val_unit(self, integer.Integer p)

/usr/lib64/python2.7/site-packages/sage/rings/fast_arith.pxd in init sage.rings.rational (/builddir/build/BUILD/sage-7.6/src/build/cythonized/sage/rings/rational.c:40371)()
      1 cpdef prime_range(start, stop=*, algorithm=*, bint py_ints=*)
      2 
----> 3 cdef class arith_int:
        global cdef = undefined
        global arith_int = undefined
      4     cdef int abs_int(self, int x) except -1
      5     cdef int sign_int(self, int n) except -2
      6     cdef int c_gcd_int(self, int a, int b) except -1
      7     cdef int c_xgcd_int(self, int a, int b, int* ss, int* tt) except -1
      8     cdef int c_inverse_mod_int(self, int a, int m) except -1
      9     cdef int c_rational_recon_int(self, int a, int m, int* n, int* d) except -1
     10 
     11 cdef class arith_llong:
     12     cdef long long abs_longlong(self, long long x) except -1
     13     cdef long long sign_longlong(self, long long n) except -2
     14     cdef long long c_gcd_longlong(self, long long a, long long b) except -1
     15     cdef public long long c_xgcd_longlong(self, long long a, long long b,
     16                                           long long *ss,
     17                                           long long *tt) except -1
     18     cdef long long c_inverse_mod_longlong(self, long long a, long long m) except -1
     19     cdef long long c_rational_recon_longlong(self, long long a, long long m,
     20                                              long long *n, long long *d) except -1

/usr/lib64/python2.7/site-packages/sage/rings/fast_arith.pyx in init sage.rings.fast_arith (/builddir/build/BUILD/sage-7.6/src/build/cythonized/sage/rings/fast_arith.c:8710)()
     34 #   * c_inverse_mod_int -- inverse of an int modulo another int
     35 #   * c_rational_recon_int -- rational reconstruction of ints
     36 #   * rational_recon_int -- export of rational reconstruction for ints
     37 #
     38 #  The long long functions are the same, except they end in _longlong.
     39 #
     40 ###################################################################
     41 
     42 # The int definitions
     43 
     44 from sage.ext.stdsage cimport PY_NEW
     45 include "sage/ext/cdefs.pxi"
     46 
     47 from sage.libs.cypari2.paridecl cimport *
     48 from sage.libs.cypari2.gen cimport Gen as pari_gen
---> 49 from sage.libs.pari.all import pari
        global sage.libs.pari.all = undefined
        global pari = undefined
     50 from sage.rings.integer cimport Integer
     51 
     52 cpdef prime_range(start, stop=None, algorithm="pari_primes", bint py_ints=False):
     53     r"""
     54     List of all primes between start and stop-1, inclusive.  If the
     55     second argument is omitted, returns the primes up to the first
     56     argument.
     57 
     58     This function is closely related to (and can use) the primes iterator.
     59     Use algorithm "pari_primes" when both start and stop are not too large,
     60     since in all cases this function makes a table of primes up to
     61     stop. If both are large, use algorithm "pari_isprime" instead.
     62 
     63     Algorithm "pari_primes" is faster for most input, but crashes for larger input.
     64     Algorithm "pari_isprime" is slower but will work for much larger input.

/usr/lib64/python2.7/site-packages/sage/libs/pari/__init__.py in <module>()
    191         # too fragile)
    192         #
    193         # The underlying issue is fixed in Cygwin v2.5.2
    194         sizemax = min(sizemax, 0xf0000000)
    195 
    196     from sage.libs.cypari2 import Pari
    197     P = Pari(1000000, sizemax)
    198 
    199     # pari_init_opts() overrides MPIR's memory allocation functions,
    200     # so we need to reset them.
    201     from sage.ext.memory import init_memory_functions
    202     init_memory_functions()
    203 
    204     return P
    205 
--> 206 pari = _get_pari_instance()
        global pari = undefined
        global _get_pari_instance = None

/usr/lib64/python2.7/site-packages/sage/libs/pari/__init__.py in _get_pari_instance()
    169     3.60546360143265208591582056420772677481026899659802474544
    170 
    171 """
    172 
    173 def _get_pari_instance():
    174     # There are two constraints for the virtual stack size:
    175     # 1) on 32-bit systems, even virtual memory can be a scarce
    176     #    resource since it is limited by 4GB (of which the kernel
    177     #    needs a significant part)
    178     # 2) the system should actually be able to handle a stack size
    179     #    as large as the complete virtual stack.
    180     # As a simple heuristic, we set the virtual stack to 1/4 of the
    181     # virtual memory.
    182     from sage.misc.getusage import virtual_memory_limit
    183 
--> 184     sizemax = virtual_memory_limit() // 4
        sizemax = undefined
        virtual_memory_limit = <function virtual_memory_limit at 0x7f8480027e60>
    185 
    186     from sage.env import CYGWIN_VERSION
    187     if CYGWIN_VERSION and CYGWIN_VERSION < (2, 5, 2):
    188         # Cygwin's mmap is broken for large NORESERVE mmaps (>~ 4GB) See
    189         # http://trac.sagemath.org/ticket/20463 So we set the max stack
    190         # size to a little below 4GB (putting it right on the margin proves
    191         # too fragile)
    192         #
    193         # The underlying issue is fixed in Cygwin v2.5.2
    194         sizemax = min(sizemax, 0xf0000000)
    195 
    196     from sage.libs.cypari2 import Pari
    197     P = Pari(1000000, sizemax)
    198 
    199     # pari_init_opts() overrides MPIR's memory allocation functions,

/usr/lib64/python2.7/site-packages/sage/misc/getusage.pyc in virtual_memory_limit()
     64 
     65     EXAMPLES::
     66 
     67         sage: from sage.misc.getusage import virtual_memory_limit
     68         sage: virtual_memory_limit() > 0
     69         True
     70         sage: virtual_memory_limit() <= sys.maxsize
     71         True
     72     """
     73     import resource
     74     try:
     75         vmax = resource.getrlimit(resource.RLIMIT_AS)[0]
     76     except resource.error:
     77         vmax = resource.RLIM_INFINITY
     78     if vmax == resource.RLIM_INFINITY:
---> 79         import psutil
        psutil = undefined
     80         vmax = psutil.virtual_memory().total + psutil.swap_memory().total
     81     return min(vmax, sys.maxsize)
     82 
     83 
     84 ########################################################################
     85 # Old deprecated stuff below
     86 ########################################################################
     87 
     88 def top():
     89     """
     90     Return the 'top' or 'prstat' line that contains this running Sage
     91     process.
     92     For FreeBSD, return the line containing this running Sage process from
     93     'ps -axwww -o pid,user,vsz,rss,state,pri,nice,time,cpu,comm'.
     94 

ImportError: No module named psutil

***************************************************************************

History of session input:
*** Last line of input (may not be in above history):




Version-Release number of selected component (if applicable):
sagemath-7.6-3.fc26.x86_64

Comment 1 Paulo Andrade 2017-11-17 11:24:48 UTC
Thanks for the report.

Looks like the issue is another missing requires.

Please let us know if after running:

# dnf install python-psutils

it will work.

Comment 2 Germano Massullo 2017-11-17 12:17:48 UTC
A package called python-psutils does not exist. I tried installing psutils and psutils-perl packages but they did not solve the problem

Comment 3 Paulo Andrade 2017-11-17 12:39:00 UTC
dnf would understand, as python-psutil is provided by python2-psutil.
But you can explicitly tell the name of the package, for example:

# dnf install python2-psutils

Comment 4 Germano Massullo 2017-11-17 12:52:31 UTC
It's python-psutil
https://src.fedoraproject.org/rpms/python-psutil
not python2-psutils
Anyway, python2-psutil installation did not solve the problem

Comment 5 Germano Massullo 2017-11-17 14:09:31 UTC
I made some tries, here is what it is needed
# dnf install python2-psutil
# cd /usr/lib64/sagemath/local/lib/
# ln -s libSingular-4.1.0.so libSingular.so

I think there should be a more professional way to achieve this in spec file, rather than using "ln -s"

Comment 6 Fedora End Of Life 2018-05-03 07:57:12 UTC
This message is a reminder that Fedora 26 is nearing its end of life.
Approximately 4 (four) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 26. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as EOL if it remains open with a Fedora  'version'
of '26'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version'
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not
able to fix it before Fedora 26 is end of life. If you would still like
to see this bug fixed and are able to reproduce it against a later version
of Fedora, you are encouraged  change the 'version' to a later Fedora
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's
lifetime, sometimes those efforts are overtaken by events. Often a
more recent Fedora release includes newer upstream software that fixes
bugs or makes them obsolete.

Comment 7 Fedora End Of Life 2018-05-29 12:17:58 UTC
Fedora 26 changed to end-of-life (EOL) status on 2018-05-29. Fedora 26
is no longer maintained, which means that it will not receive any
further security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version. If you
are unable to reopen this bug, please file a new report against the
current release. If you experience problems, please add a comment to this
bug.

Thank you for reporting this bug and we are sorry it could not be fixed.


Note You need to log in before you can comment on or make changes to this bug.