Bug#898625: sagemath-common: sage crashed

Francesco Potortì Potorti at isti.cnr.it
Mon May 14 13:01:19 BST 2018


Package: sagemath-common
Version: 8.1-7
Severity: important

I get the following output when calling sage in a terminal.  Appended
you find the crash report.  Going to follow the instructions and report
it upstream.


$ sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 8.1, Release Date: 2017-12-07                     │
│ Type "notebook()" for the browser-based notebook interface.        │
│ Type "help()" for help.                                            │
└────────────────────────────────────────────────────────────────────┘

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

Oops, Sage crashed. We do our best to make it stable, but...

A crash report was automatically generated with the following information:
  - A verbatim copy of the crash traceback.
  - A copy of your input history during this session.
  - Data on your current Sage configuration.

It was left in the file named:
	'/home/pot/.ipython/Sage_crash_report.txt'
If you can email this file to the developers, the information in it will help
them in understanding and correcting the problem.

You can mail it to: sage-support at sage-support at googlegroups.com
with the subject 'Sage Crash Report'.

If you want to do it now, the following command will work (under Unix):
mail -s 'Sage Crash Report' sage-support at googlegroups.com < /home/pot/.ipython/Sage_crash_report.txt

To ensure accurate tracking of this issue, please file a report about it at:
http://trac.sagemath.org

Hit <Enter> to quit (your terminal may close):


-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (990, 'testing'), (101, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.14.0-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8), LANGUAGE=C:en_GB:en:en_US:it:fr:es (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages sagemath-common depends on:
ii  python     2.7.15~rc1-1
ii  python2.7  2.7.15-1

sagemath-common recommends no packages.

sagemath-common suggests no packages.

-- no debconf information


===File /home/pot/.ipython/Sage_crash_report.txt============
***************************************************************************

IPython post-mortem report

{'commit_hash': u'b467d487e',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': '/usr/lib/python2.7/dist-packages/IPython',
 'ipython_version': '5.5.0',
 'os_name': 'posix',
 'platform': 'Linux-4.14.0-3-amd64-x86_64-with-debian-buster-sid',
 'sys_executable': '/usr/bin/python',
 'sys_platform': 'linux2',
 'sys_version': '2.7.15 (default, May  1 2018, 05:55:50) \n[GCC 7.3.0]'}

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



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

Crash traceback:

---------------------------------------------------------------------------
---------------------------------------------------------------------------
ImportError                                  Python 2.7.15: /usr/bin/python
                                                   Mon May 14 12:00:24 2018
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 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 0x7f7b71ad64d0>>
     11 app.start()

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

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

/usr/lib/python2.7/dist-packages/sage/repl/interpreter.pyc in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>)
    730             This code is based on
    731             :meth:`TerminalIPythonApp.init_shell`.
    732 
    733         EXAMPLES::
    734 
    735             sage: from sage.repl.interpreter import SageTerminalApp
    736             sage: app = SageTerminalApp.instance()
    737             sage: app.shell
    738             <sage.repl.interpreter.SageTestShell object at 0x...>
    739         """
    740         # Shell initialization
    741         self.shell = self.shell_class.instance(
    742             parent=self,
    743             config=self.config,
    744             profile_dir=self.profile_dir,
--> 745             ipython_dir=self.ipython_dir)
        global ipython_dir = undefined
        self.ipython_dir = u'/home/pot/.ipython'
    746         self.shell.configurables.append(self)
    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

/usr/lib/python2.7/dist-packages/traitlets/config/configurable.pyc in instance(cls=<class 'sage.repl.interpreter.SageTerminalInteractiveShell'>, *args=(), **kwargs={'config': {'InteractiveShell': {'term_title': True, 'color...ue}, 'SageTerminalApp': {'force_interact': True}}, 'ipython_dir': u'/home/pot/.ipython', 'parent': <sage.repl.interpreter.SageTerminalApp object>, 'profile_dir': <IPython.core.profiledir.ProfileDir object>})
    397             >>> class Foo(SingletonConfigurable): pass
    398             >>> foo = Foo.instance()
    399             >>> foo == Foo.instance()
    400             True
    401 
    402         Create a subclass that is retrived using the base class instance::
    403 
    404             >>> class Bar(SingletonConfigurable): pass
    405             >>> class Bam(Bar): pass
    406             >>> bam = Bam.instance()
    407             >>> bam == Bar.instance()
    408             True
    409         """
    410         # Create and save the instance
    411         if cls._instance is None:
--> 412             inst = cls(*args, **kwargs)
        inst = undefined
        cls = <class 'sage.repl.interpreter.SageTerminalInteractiveShell'>
        args = ()
        kwargs = {'ipython_dir': u'/home/pot/.ipython', 'profile_dir': <IPython.core.profiledir.ProfileDir object at 0x7f7b6e84cd90>, 'config': {'InteractiveShell': {'term_title': True, 'colors': 'LightBG', 'confirm_exit': False, 'prompts_class': <class 'sage.repl.prompts.SagePrompts'>, 'separate_in': '', 'ast_node_interactivity': 'all', 'simple_prompt': False}, 'InteractiveShellApp': {'extensions': ['sage']}, 'TerminalIPythonApp': {'shell_class': <class 'sage.repl.interpreter.SageTerminalInteractiveShell'>, 'display_banner': False, 'test_shell': False, 'verbose_crash': True}, 'SageTerminalApp': {'force_interact': True}}, 'parent': <sage.repl.interpreter.SageTerminalApp object at 0x7f7b71ad64d0>}
    413             # Now make sure that the instance will also be returned by
    414             # parent classes' _instance attribute.
    415             for subclass in cls._walk_mro():
    416                 subclass._instance = inst
    417 
    418         if isinstance(cls._instance, cls):
    419             return cls._instance
    420         else:
    421             raise MultipleInstanceError(
    422                 'Multiple incompatible subclass instances of '
    423                 '%s are being created.' % cls.__name__
    424             )
    425 
    426     @classmethod
    427     def initialized(cls):

/usr/lib/python2.7/dist-packages/IPython/terminal/interactiveshell.pyc in __init__(self=<sage.repl.interpreter.SageTerminalInteractiveShell object>, *args=(), **kwargs={'config': {'InteractiveShell': {'term_title': True, 'color...ue}, 'SageTerminalApp': {'force_interact': True}}, 'ipython_dir': u'/home/pot/.ipython', 'parent': <sage.repl.interpreter.SageTerminalApp object>, 'profile_dir': <IPython.core.profiledir.ProfileDir object>})
    423 
    424     def init_alias(self):
    425         # The parent class defines aliases that can be safely used with any
    426         # frontend.
    427         super(TerminalInteractiveShell, self).init_alias()
    428 
    429         # Now define aliases that only make sense on the terminal, because they
    430         # need direct access to the console in a way that we can't emulate in
    431         # GUI or web frontend
    432         if os.name == 'posix':
    433             for cmd in ['clear', 'more', 'less', 'man']:
    434                 self.alias_manager.soft_define_alias(cmd, cmd)
    435 
    436 
    437     def __init__(self, *args, **kwargs):
--> 438         super(TerminalInteractiveShell, self).__init__(*args, **kwargs)
        global super = undefined
        global TerminalInteractiveShell = <class 'IPython.terminal.interactiveshell.TerminalInteractiveShell'>
        self.__init__ = <bound method SageTerminalInteractiveShell.__init__ of <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f7b6e84cdd0>>
        args = ()
        kwargs = {'profile_dir': <IPython.core.profiledir.ProfileDir object at 0x7f7b6e84cd90>, 'config': {'InteractiveShell': {'term_title': True, 'colors': 'LightBG', 'confirm_exit': False, 'prompts_class': <class 'sage.repl.prompts.SagePrompts'>, 'separate_in': '', 'ast_node_interactivity': 'all', 'simple_prompt': False}, 'InteractiveShellApp': {'extensions': ['sage']}, 'TerminalIPythonApp': {'shell_class': <class 'sage.repl.interpreter.SageTerminalInteractiveShell'>, 'display_banner': False, 'test_shell': False, 'verbose_crash': True}, 'SageTerminalApp': {'force_interact': True}}, 'ipython_dir': u'/home/pot/.ipython', 'parent': <sage.repl.interpreter.SageTerminalApp object at 0x7f7b71ad64d0>}
    439         self.init_prompt_toolkit_cli()
    440         self.init_term_title()
    441         self.keep_running = True
    442 
    443         self.debugger_history = InMemoryHistory()
    444 
    445     def ask_exit(self):
    446         self.keep_running = False
    447 
    448     rl_next_input = None
    449 
    450     def pre_prompt(self):
    451         if self.rl_next_input:
    452             # We can't set the buffer here, because it will be reset just after
    453             # this. Adding a callable to pre_run_callables does what we need

/usr/lib/python2.7/dist-packages/IPython/core/interactiveshell.pyc in __init__(self=<sage.repl.interpreter.SageTerminalInteractiveShell object>, ipython_dir=u'/home/pot/.ipython', profile_dir=<IPython.core.profiledir.ProfileDir object>, user_module=None, user_ns=None, custom_exceptions=((), None), **kwargs={'config': {'InteractiveShell': {'term_title': True, 'color...ue}, 'SageTerminalApp': {'force_interact': True}}, 'parent': <sage.repl.interpreter.SageTerminalApp object>})
    488         self.init_builtins()
    489 
    490         # The following was in post_config_initialization
    491         self.init_inspector()
    492         if py3compat.PY3:
    493             self.raw_input_original = input
    494         else:
    495             self.raw_input_original = raw_input
    496         self.init_completer()
    497         # TODO: init_io() needs to happen before init_traceback handlers
    498         # because the traceback handlers hardcode the stdout/stderr streams.
    499         # This logic in in debugger.Pdb and should eventually be changed.
    500         self.init_io()
    501         self.init_traceback_handlers(custom_exceptions)
    502         self.init_prompts()
--> 503         self.init_display_formatter()
        self.init_display_formatter = <bound method SageTerminalInteractiveShell.init_display_formatter of <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f7b6e84cdd0>>
    504         self.init_display_pub()
    505         self.init_data_pub()
    506         self.init_displayhook()
    507         self.init_magics()
    508         self.init_alias()
    509         self.init_logstart()
    510         self.init_pdb()
    511         self.init_extension_manager()
    512         self.init_payload()
    513         self.init_deprecation_warnings()
    514         self.hooks.late_startup_hook()
    515         self.events.trigger('shell_initialized', self)
    516         atexit.register(self.atexit_operations)
    517 
    518     def get_ipython(self):

/usr/lib/python2.7/dist-packages/sage/repl/interpreter.pyc in init_display_formatter(self=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    245 
    246         sage: from sage.repl.interpreter import SageTerminalInteractiveShell
    247         sage: SageTerminalInteractiveShell()   # not tested
    248         <sage.repl.interpreter.SageNotebookInteractiveShell object at 0x...>
    249     """
    250 
    251     def init_display_formatter(self):
    252         """
    253         Switch to the Sage IPython commandline rich output backend
    254 
    255         EXAMPLES::
    256 
    257             sage: from sage.repl.interpreter import SageTerminalInteractiveShell
    258             sage: SageTerminalInteractiveShell().init_display_formatter()   # not tested
    259         """
--> 260         from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
        global sage.repl.rich_output.backend_ipython = undefined
        BackendIPythonCommandline = undefined
    261         backend = BackendIPythonCommandline()
    262         backend.get_display_manager().switch_backend(backend, shell=self)
    263 
    264 
    265 class SageTestShell(SageShellOverride, TerminalInteractiveShell):
    266     """
    267     Test Shell
    268 
    269     Care must be taken in these doctests to quit the test shell in
    270     order to switch back the rich output display backend to the
    271     doctest backend.
    272 
    273     EXAMPLES::
    274 
    275         sage: from sage.repl.interpreter import get_test_shell

/usr/lib/python2.7/dist-packages/sage/repl/rich_output/__init__.py in <module>()
      1 # -*- encoding: utf-8 -*-
      2 
----> 3 from .display_manager import get_display_manager
        global display_manager = undefined
        global get_display_manager = undefined
      4 from .pretty_print import pretty_print
      5 
      6 

/usr/lib/python2.7/dist-packages/sage/repl/rich_output/display_manager.py in <module>()
     24     The Sage display manager using the doctest backend
     25 """
     26 
     27 #*****************************************************************************
     28 #       Copyright (C) 2015 Volker Braun <vbraun.name at gmail.com>
     29 #
     30 #  Distributed under the terms of the GNU General Public License (GPL)
     31 #  as published by the Free Software Foundation; either version 2 of
     32 #  the License, or (at your option) any later version.
     33 #                  http://www.gnu.org/licenses/
     34 #*****************************************************************************
     35 
     36 
     37 import warnings
     38 
---> 39 from sage.structure.sage_object import SageObject
        global sage.structure.sage_object = undefined
        global SageObject = undefined
     40 from sage.repl.rich_output.output_basic import (
     41     OutputPlainText, OutputAsciiArt, OutputUnicodeArt, OutputLatex,
     42 )
     43 from sage.repl.rich_output.preferences import DisplayPreferences
     44 
     45 
     46 class DisplayException(Exception):
     47     """
     48     Base exception for all rich output-related exceptions.
     49 
     50     EXAMPLES::
     51 
     52         sage: from sage.repl.rich_output.display_manager import DisplayException
     53         sage: raise DisplayException('foo')
     54         Traceback (most recent call last):

ImportError: No module named sage_object

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

History of session input:============================================================



More information about the debian-science-maintainers mailing list