Sage Crash Report

141 views
Skip to first unread message

Lance Edward Miller

unread,
Aug 28, 2021, 5:57:05 PM8/28/21
to sage-s...@googlegroups.com
To whom it may concern,

 I'm installing sage from the synaptic package manager on Linux Mint 20.1. The package is for Sage 9.0, but the app does not run. Following is the crash report, any advice on how to best resolve (uninstall and install from source?) is appreciated:


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

IPython post-mortem report

{'commit_hash': '<not found>',
 'commit_source': '(none found)',
 'default_encoding': 'utf-8',
 'ipython_path': '/usr/lib/python3/dist-packages/IPython',
 'ipython_version': '7.13.0',
 'os_name': 'posix',
 'platform': 'Linux-5.4.0-81-generic-x86_64-with-glibc2.29',
 'sys_executable': '/usr/bin/python3',
 'sys_platform': 'linux',
 'sys_version': '3.8.10 (default, Jun  2 2021, 10:49:15) \n[GCC 9.4.0]'}

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



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

Crash traceback:

---------------------------------------------------------------------------
---------------------------------------------------------------------------
ImportError                                 Python 3.8.10: /usr/bin/python3
                                                   Sat Aug 28 16:48:31 2021
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/share/sagemath/bin/sage-ipython in <module>
      1 #!/usr/bin/env sage-python
      2 # -*- coding: utf-8 -*-
      3 """
      4 Sage IPython startup script.
      5 """
      6
      7 # Display startup banner. Do this before anything else to give the user
      8 # early feedback that Sage is starting.
      9 from sage.misc.banner import banner
     10 banner()
     11
     12 from sage.repl.interpreter import SageTerminalApp
     13
     14 app = SageTerminalApp.instance()
---> 15 app.initialize()
        global app.initialize = <bound method TerminalIPythonApp.initialize of <sage.repl.interpreter.SageTerminalApp object at 0x7f6700317eb0>>
     16 app.start()

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

/usr/lib/python3/dist-packages/traitlets/config/application.py in catch_config_error(method=<function TerminalIPythonApp.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 TerminalIPythonApp.initialize at 0x7f66febbf5e0>
        app = <sage.repl.interpreter.SageTerminalApp object at 0x7f6700317eb0>
        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/lib/python3/dist-packages/IPython/terminal/ipapp.py in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None)
    302
    303         return super(TerminalIPythonApp, self).parse_command_line(argv)
    304    
    305     @catch_config_error
    306     def initialize(self, argv=None):
    307         """Do actions after construct, but before starting the app."""
    308         super(TerminalIPythonApp, self).initialize(argv)
    309         if self.subapp is not None:
    310             # don't bother initializing further, starting subapp
    311             return
    312         # print self.extra_args
    313         if self.extra_args and not self.something_to_run:
    314             self.file_to_run = self.extra_args[0]
    315         self.init_path()
    316         # create the shell
--> 317         self.init_shell()
        self.init_shell = <bound method SageTerminalApp.init_shell of <sage.repl.interpreter.SageTerminalApp object at 0x7f6700317eb0>>
    318         # and draw the banner
    319         self.init_banner()
    320         # Now a variety of things that happen after the banner is printed.
    321         self.init_gui_pylab()
    322         self.init_extensions()
    323         self.init_code()
    324
    325     def init_shell(self):
    326         """initialize the InteractiveShell instance"""
    327         # Create an InteractiveShell instance.
    328         # shell.display_banner should always be False for the terminal
    329         # based app, because we call shell.show_banner() by hand below
    330         # so the banner shows *before* all extension loading stuff.
    331         self.shell = self.interactive_shell_class.instance(parent=self,
    332                         profile_dir=self.profile_dir,

/usr/lib/python3/dist-packages/sage/repl/interpreter.py in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>)
    727         self.shell.has_sage_extensions = SAGE_EXTENSION in self.extensions
    728
    729         # Load the %lprun extension if available
    730         try:
    731             import line_profiler
    732         except ImportError:
    733             pass
    734         else:
    735             self.extensions.append('line_profiler')
    736
    737         if self.shell.has_sage_extensions:
    738             self.extensions.remove(SAGE_EXTENSION)
    739
    740             # load sage extension here to get a crash if
    741             # something is wrong with the sage library
--> 742             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 0x7f66fcd10490>>
        global SAGE_EXTENSION = 'sage'
    743
    744

/usr/lib/python3/dist-packages/IPython/core/extensions.py in load_extension(self=<IPython.core.extensions.ExtensionManager object>, module_str='sage')
     72         if module_str in self.loaded:
     73             return "already loaded"
     74
     75         from IPython.utils.syspathcontext import prepended_to_syspath
     76
     77         with self.shell.builtin_trap:
     78             if module_str not in sys.modules:
     79                 with prepended_to_syspath(self.ipython_extension_dir):
     80                     mod = import_module(module_str)
     81                     if mod.__file__.startswith(self.ipython_extension_dir):
     82                         print(("Loading extensions from {dir} is deprecated. "
     83                                "We recommend managing extensions like any "
     84                                "other Python packages, in site-packages.").format(
     85                               dir=compress_user(self.ipython_extension_dir)))
     86             mod = sys.modules[module_str]
---> 87             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 0x7f66fcd10490>>
        mod = <module 'sage' from '/usr/lib/python3/dist-packages/sage/__init__.py'>
     88                 self.loaded.add(module_str)
     89             else:
     90                 return "no load function"
     91
     92     def unload_extension(self, module_str):
     93         """Unload an IPython extension by its module name.
     94
     95         This function looks up the extension's name in ``sys.modules`` and
     96         simply calls ``mod.unload_ipython_extension(self)``.
     97        
     98         Returns the string "no unload function" if the extension doesn't define
     99         a function to unload itself, "not loaded" if the extension isn't loaded,
    100         otherwise None.
    101         """
    102         if module_str not in self.loaded:

/usr/lib/python3/dist-packages/IPython/core/extensions.py in _call_load_ipython_extension(self=<IPython.core.extensions.ExtensionManager object>, mod=<module 'sage' from '/usr/lib/python3/dist-packages/sage/__init__.py'>)
    119         """
    120         from IPython.utils.syspathcontext import prepended_to_syspath
    121
    122         if (module_str in self.loaded) and (module_str in sys.modules):
    123             self.unload_extension(module_str)
    124             mod = sys.modules[module_str]
    125             with prepended_to_syspath(self.ipython_extension_dir):
    126                 reload(mod)
    127             if self._call_load_ipython_extension(mod):
    128                 self.loaded.add(module_str)
    129         else:
    130             self.load_extension(module_str)
    131
    132     def _call_load_ipython_extension(self, mod):
    133         if hasattr(mod, 'load_ipython_extension'):
--> 134             mod.load_ipython_extension(self.shell)
        mod.load_ipython_extension = <function load_ipython_extension at 0x7f67002d7040>
        self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f66feb5bac0>
    135             return True
    136
    137     def _call_unload_ipython_extension(self, mod):
    138         if hasattr(mod, 'unload_ipython_extension'):
    139             mod.unload_ipython_extension(self.shell)
    140             return True
    141
    142     @undoc
    143     def install_extension(self, url, filename=None):
    144         """
    145         Deprecated.
    146         """
    147         # Ensure the extension directory exists
    148         raise DeprecationWarning(
    149             '`install_extension` and the `install_ext` magic have been deprecated since IPython 4.0'

/usr/lib/python3/dist-packages/sage/__init__.py in load_ipython_extension(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,))
      1 __all__ = ['all']
      2
      3 # Set sage.__version__ to the current version number. This is analogous
      4 # to many other Python packages.
      5 from sage.version import version as __version__
      6
      7 # Make sure that the correct zlib library is loaded. This is needed
      8 # to prevent the system zlib to be loaded instead of the Sage one.
      9 # See https://trac.sagemath.org/ticket/23122
     10 import zlib
     11
     12 # IPython calls this when starting up
     13 def load_ipython_extension(*args):
     14     import sage.repl.ipython_extension
---> 15     sage.repl.ipython_extension.load_ipython_extension(*args)
        sage.repl.ipython_extension.load_ipython_extension = <function load_ipython_extension at 0x7f66fcacaa60>
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f66feb5bac0>,)
     16
     17
     18 # Monkey-patch inspect.isfunction() to support Cython functions.
     19 def isfunction(obj):
     20     """
     21     Check whether something is a function.
     22
     23     We assume that anything which has a genuine ``__code__``
     24     attribute (not using ``__getattr__`` overrides) is a function.
     25     This is meant to support Cython functions.
     26
     27     EXAMPLES::
     28
     29         sage: from inspect import isfunction
     30         sage: def f(): pass
     31         sage: isfunction(f)

/usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,), **kwargs={})
    547         ....:     if work:
    548         ....:         return 'foo worked'
    549         ....:     raise RuntimeError("foo didn't work")
    550         sage: foo(False)
    551         Traceback (most recent call last):
    552         ...
    553         RuntimeError: foo didn't work
    554         sage: foo(True)
    555         'foo worked'
    556         sage: foo(False)
    557         sage: foo(True)
    558     """
    559     @wraps(func)
    560     def wrapper(*args, **kwargs):
    561         if not wrapper.has_run:
--> 562             result = func(*args, **kwargs)
        result = undefined
        global func = undefined
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f66feb5bac0>,)
        kwargs = {}
    563             wrapper.has_run = True
    564             return result
    565     wrapper.has_run = False
    566     return wrapper
    567
    568
    569 @run_once
    570 def load_ipython_extension(ip):
    571     """
    572     Load the extension in IPython.
    573     """
    574     # this modifies ip
    575     SageCustomizations(shell=ip)

/usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    560     def wrapper(*args, **kwargs):
    561         if not wrapper.has_run:
    562             result = func(*args, **kwargs)
    563             wrapper.has_run = True
    564             return result
    565     wrapper.has_run = False
    566     return wrapper
    567
    568
    569 @run_once
    570 def load_ipython_extension(ip):
    571     """
    572     Load the extension in IPython.
    573     """
    574     # this modifies ip
--> 575     SageCustomizations(shell=ip)
        global SageCustomizations = <class 'sage.repl.ipython_extension.SageCustomizations'>
        global shell = undefined
        ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f66feb5bac0>

/usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in __init__(self=<sage.repl.ipython_extension.SageCustomizations object>, shell=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    420     def __init__(self, shell=None):
    421         """
    422         Initialize the Sage plugin.
    423         """
    424         self.shell = shell
    425
    426         self.auto_magics = SageMagics(shell)
    427         self.shell.register_magics(self.auto_magics)
    428
    429         import sage.misc.edit_module as edit_module
    430         self.shell.set_hook('editor', edit_module.edit_devel)
    431
    432         self.init_inspector()
    433         self.init_line_transforms()
    434
--> 435         import sage.all # until sage's import hell is fixed
        sage.all = undefined
    436
    437         self.shell.verbose_quit = True
    438         self.set_quit_hook()
    439
    440         self.register_interface_magics()
    441
    442         if SAGE_IMPORTALL == 'yes':
    443             self.init_environment()
    444
    445     def register_interface_magics(self):
    446         """
    447         Register magics for each of the Sage interfaces
    448         """
    449         from sage.repl.interface_magic import InterfaceMagic
    450         InterfaceMagic.register_all(self.shell)

/usr/lib/python3/dist-packages/sage/all.py in <module>
     91 warnings.filterwarnings('ignore', category=RuntimeWarning,
     92   message=r"'sin' and 'sout' swap memory stats couldn't be determined")
     93 from sage.misc.all       import *         # takes a while
     94 from sage.typeset.all    import *
     95 from sage.repl.all       import *
     96
     97 from sage.misc.sh import sh
     98
     99 from sage.libs.all       import *
    100 from sage.data_structures.all import *
    101 from sage.doctest.all    import *
    102
    103 from sage.structure.all  import *
    104 from sage.rings.all      import *
    105 from sage.arith.all      import *
--> 106 from sage.matrix.all     import *
        global sage.matrix.all = undefined
    107
    108 from sage.symbolic.all   import *
    109 from sage.modules.all    import *
    110 from sage.monoids.all    import *
    111 from sage.algebras.all   import *
    112 from sage.modular.all    import *
    113 from sage.sat.all        import *
    114 from sage.schemes.all    import *
    115 from sage.graphs.all     import *
    116 from sage.groups.all     import *
    117 from sage.arith.power    import generic_power as power
    118 from sage.databases.all  import *
    119 from sage.categories.all import *
    120 from sage.sets.all       import *
    121 from sage.probability.all import *

/usr/lib/python3/dist-packages/sage/matrix/__init__.py in <module>
      1 # Resolve a cyclic import
----> 2 import sage.matrix.args
        global sage.matrix.args = undefined

/usr/lib/python3/dist-packages/sage/matrix/args.pyx in init sage.matrix.args (build/cythonized/sage/matrix/args.c:21273)()
      8 #       Copyright (C) 2018 Jeroen Demeyer <J.De...@UGent.be>
      9 #
     10 # This program is free software: you can redistribute it and/or modify
     11 # it under the terms of the GNU General Public License as published by
     12 # the Free Software Foundation, either version 2 of the License, or
     13 # (at your option) any later version.
     14 #                  http://www.gnu.org/licenses/
     15 #*****************************************************************************
     16
     17 cimport cython
     18 from cpython.sequence cimport PySequence_Fast
     19 from cysignals.signals cimport sig_check
     20 from cypari2.gen cimport Gen
     21 from cypari2.types cimport typ, t_MAT, t_VEC, t_COL, t_VECSMALL, t_LIST, t_STR, t_CLOSURE
     22
---> 23 from .matrix_space import MatrixSpace
        global matrix_space = undefined
        global MatrixSpace = undefined
     24 from sage.rings.all import ZZ, RDF, CDF
     25 from sage.structure.coerce cimport (coercion_model,
     26         is_numpy_type, py_scalar_parent)
     27 from sage.structure.element cimport Element, RingElement, Vector
     28 from sage.arith.long cimport pyobject_to_long
     29 from sage.misc.misc_c import sized_iter
     30 from sage.categories import monoids
     31
     32
     33 CommutativeMonoids = monoids.Monoids().Commutative()
     34
     35
     36 cdef inline bint element_is_scalar(Element x):
     37     """
     38     Should this element be considered a scalar (as opposed to a vector)?

/usr/lib/python3/dist-packages/sage/matrix/matrix_space.py in <module>
     31 # (at your option) any later version.
     32 #                  https://www.gnu.org/licenses/
     33 # ****************************************************************************
     34 from __future__ import print_function, absolute_import
     35 from six.moves import range
     36 from six import iteritems, integer_types
     37
     38 # System imports
     39 import sys
     40 import operator
     41
     42 # Sage matrix imports
     43 from . import matrix_generic_dense
     44 from . import matrix_generic_sparse
     45
---> 46 from . import matrix_modn_sparse
        global matrix_modn_sparse = undefined
     47
     48 from . import matrix_mod2_dense
     49 from . import matrix_gf2e_dense
     50
     51 from . import matrix_integer_dense
     52 from . import matrix_integer_sparse
     53
     54 from . import matrix_rational_dense
     55 from . import matrix_rational_sparse
     56
     57 from . import matrix_polynomial_dense
     58 from . import matrix_mpolynomial_dense
     59
     60 # Sage imports
     61 from sage.misc.superseded import deprecation

ImportError: /usr/lib/python3/dist-packages/sage/matrix/matrix_modn_sparse.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZNK6Givaro7IntegercvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEB5cxx11Ev

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

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

Best,
Lance

Dima Pasechnik

unread,
Aug 29, 2021, 3:14:38 AM8/29/21
to sage-support
On Sat, Aug 28, 2021 at 10:57 PM Lance Edward Miller <lem...@uark.edu> wrote:
>
> To whom it may concern,
>
> I'm installing sage from the synaptic package manager on Linux Mint 20.1. The package is for Sage 9.0, but the app does not run. Following is the crash report, any advice on how to best resolve (uninstall and install from source?) is appreciated:

This has to be reported to Linux Mint - we don't do packaging for
particular Linux distributions, and it looks like a packaging error,
not anything we can help with.
You can install Sage in several other ways:
https://doc.sagemath.org/html/en/installation/index.html
> --
> You received this message because you are subscribed to the Google Groups "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sage-support...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/CAPEqHYnogPuc6SeExsyA7oXt54UcKYPECSp1N0u%3Dqpq-jn69JQ%40mail.gmail.com.

hbetx9

unread,
Aug 29, 2021, 5:49:52 PM8/29/21
to sage-support
The package log has the following error:

/usr/lib/python3/dist-packages/sage/combinat/root_system/branching_rules.py:1753: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if len(stypes) is not 2:
/usr/lib/python3/dist-packages/sage/graphs/graph_latex.py:1159: SyntaxWarning: 'str' object is not callable; perhaps you missed a comma?
  raise TypeError('%s option must be a dictionary, not %s' (name, value))
/usr/lib/python3/dist-packages/sage/graphs/graph_latex.py:1168: SyntaxWarning: 'str' object is not callable; perhaps you missed a comma?
  raise TypeError('%s option must be a dictionary, not %s' (name, value))
/usr/lib/python3/dist-packages/sage/graphs/graph_latex.py:1175: SyntaxWarning: 'str' object is not callable; perhaps you missed a comma?
  raise TypeError('%s option must be a dictionary, not %s' (name, value))
/usr/lib/python3/dist-packages/sage/graphs/graph_latex.py:1182: SyntaxWarning: 'str' object is not callable; perhaps you missed a comma?
  raise TypeError('%s option must be a dictionary, not %s' (name, value))
/usr/lib/python3/dist-packages/sage/graphs/graph_latex.py:1189: SyntaxWarning: 'str' object is not callable; perhaps you missed a comma?
  raise TypeError('%s option must be a dictionary, not %s' (name, value))
/usr/lib/python3/dist-packages/sage/graphs/graph_latex.py:1196: SyntaxWarning: 'str' object is not callable; perhaps you missed a comma?
  raise TypeError('%s option must be a dictionary, not %s' (name, value))
/usr/lib/python3/dist-packages/sage/graphs/graph_latex.py:1203: SyntaxWarning: 'str' object is not callable; perhaps you missed a comma?
  raise TypeError('%s option must be a dictionary, not %s' (name, value))

I think there is something about the way sage is trying to be installed and python, but I'm unsure how to diagnose. Installing from source is an option yes, but I fear it will have the same issue.

hbetx9

unread,
Aug 30, 2021, 10:13:49 AM8/30/21
to sage-support
I think the issue is a disagreement with python. The package installs fine on a clean machine. I know this isn't the wheelhouse, but how can I diagnose my python configuration for compatibility with sage. In particular, I have python 3.8.10 installed systemwide.

hbetx9

unread,
Aug 31, 2021, 3:55:46 PM8/31/21
to sage-support
On my system, python2 and python3 is installed, but there is no generic python symlink. Does this need to be created for sage and if so should it be python3? In installed from tarball, so this is not an issue with the Ubuntu package.

Matthias Koeppe

unread,
Aug 31, 2021, 5:22:10 PM8/31/21
to sage-support
On Tuesday, August 31, 2021 at 12:55:46 PM UTC-7 hbetx9 wrote:
On my system, python2 and python3 is installed, but there is no generic python symlink. Does this need to be created for sage and if so should it be python3? In installed from tarball, so this is not an issue with the Ubuntu package.

The latest binary for Linux (https://www.sagemath.org/download.html) is Sage 9.3. If you are using this binary tarball, you will have to make sure that the symlink python->python3 exists; there is a package that provides it. See also https://wiki.sagemath.org/ReleaseTours/sage-9.3#Availability_in_distributions_and_as_binaries

The latest version is Sage 9.4. Using the source tarball, there is no need to do anything about python/python3. Just follow the instructions in the README. 

 

hbetx9

unread,
Sep 1, 2021, 3:00:15 PM9/1/21
to sage-support
So I got this working in my home directory but want the SageMath directory system wide. I moved it to /opt and changed ownership to root.root, however this causes now a disagreement with the SAGE_ROOT environment variable. Should I unpack the tarball as root there to install or is there an easy config/make that I can run on this directory to get it to work as a system wide install?

Matthias Koeppe

unread,
Sep 1, 2021, 3:08:56 PM9/1/21
to sage-support

hbetx9

unread,
Sep 1, 2021, 3:27:46 PM9/1/21
to sage-support
As the directory is in /opt and ownership is root.root, I can't run this as it gets permission denied when writing the log file.

hbetx9

unread,
Sep 1, 2021, 3:31:17 PM9/1/21
to sage-support
I can ask this another way. I have the tarball, and I want to end up with a system wide install. This is not build from source. What is the best way to do this?

In the referenced instructions the modification is to SAGE_LOCAL and not SAGE_ROOT. I'm confused as to the difference and effect.
Reply all
Reply to author
Forward
0 new messages