sage crash report

100 views
Skip to first unread message

Fabio Di Cosmo

unread,
Sep 15, 2016, 5:10:13 AM9/15/16
to sage-s...@googlegroups.com
***************************************************************************

IPython post-mortem report

{'commit_hash': u'b630b41',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': '/usr/lib/sagemath/local/lib/python2.7/site-packages/IPython',
 'ipython_version': '4.2.1',
 'os_name': 'posix',
 'platform': 'Linux-4.4.0-36-generic-x86_64-with-debian-stretch-sid',
 'sys_executable': '/usr/lib/sagemath/local/bin/python',
 'sys_platform': 'linux2',
 'sys_version': '2.7.10 (default, Aug  6 2016, 15:34:26) \n[GCC 4.8.4]'}

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



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

Crash traceback:

---------------------------------------------------------------------------
---------------------------------------------------------------------------
ImportError               Python 2.7.10: /usr/lib/sagemath/local/bin/python
                                                   Thu Sep 15 11:06:45 2016
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/lib/sagemath/src/bin/sage-ipython in <module>()
      1 #!/usr/bin/env python
      2 # -*- coding: utf-8 -*-
      3 """
      4 Sage IPython startup script.
      5 """
      6
      7 # Install extra readline commands before IPython initialization
      8 from sage.repl.readline_extra_commands import *
      9
     10 from sage.repl.interpreter import SageTerminalApp
     11
     12 app = SageTerminalApp.instance()
---> 13 app.initialize()
        global app.initialize = <bound method SageTerminalApp.initialize of <sage.repl.interpreter.SageTerminalApp object at 0x7fa7b0da2550>>
     14 app.start()

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

/usr/lib/sagemath/local/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={})
     59
     60 #-----------------------------------------------------------------------------
     61 # Application class
     62 #-----------------------------------------------------------------------------
     63
     64 @decorator
     65 def catch_config_error(method, app, *args, **kwargs):
     66     """Method decorator for catching invalid config (Trait/ArgumentErrors) during init.
     67
     68     On a TraitError (generally caused by bad config), this will print the trait's
     69     message, and exit the app.
     70    
     71     For use on init methods, to prevent invoking excepthook on invalid input.
     72     """
     73     try:
---> 74         return method(app, *args, **kwargs)
        method = <function initialize at 0x7fa7aa43a8c0>
        app = <sage.repl.interpreter.SageTerminalApp object at 0x7fa7b0da2550>
        args = (None,)
        kwargs = {}
     75     except (TraitError, ArgumentError) as e:
     76         app.print_help()
     77         app.log.fatal("Bad config encountered during initialization:")
     78         app.log.fatal(str(e))
     79         app.log.debug("Config at the time: %s", app.config)
     80         app.exit(1)
     81
     82
     83 class ApplicationError(Exception):
     84     pass
     85
     86
     87 class LevelFormatter(logging.Formatter):
     88     """Formatter with additional `highlevel` record
     89    

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

/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/repl/interpreter.pyc in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>)
    783         self.shell.has_sage_extensions = SAGE_EXTENSION in self.extensions
    784
    785         # Load the %lprun extension if available
    786         try:
    787             import line_profiler
    788         except ImportError:
    789             pass
    790         else:
    791             self.extensions.append('line_profiler')
    792
    793         if self.shell.has_sage_extensions:
    794             self.extensions.remove(SAGE_EXTENSION)
    795
    796             # load sage extension here to get a crash if
    797             # something is wrong with the sage library
--> 798             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 0x7fa7a8332450>>
        global SAGE_EXTENSION = 'sage'
    799
    800

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

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

/usr/lib/sagemath/local/lib/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 0x7fa7a8343398>
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7fa7aa3d6d10>,)

/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,), **kwargs={})
    459         ....:     if work:
    460         ....:         return 'foo worked'
    461         ....:     raise RuntimeError("foo didn't work")
    462         sage: foo(False)
    463         Traceback (most recent call last):
    464         ...
    465         RuntimeError: foo didn't work
    466         sage: foo(True)
    467         'foo worked'
    468         sage: foo(False)
    469         sage: foo(True)
    470     """
    471     @wraps(func)
    472     def wrapper(*args, **kwargs):
    473         if not wrapper.has_run:
--> 474             result = func(*args, **kwargs)
        result = undefined
        global func = undefined
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7fa7aa3d6d10>,)
        kwargs = {}
    475             wrapper.has_run = True
    476             return result
    477     wrapper.has_run = False
    478     return wrapper
    479
    480
    481 @run_once
    482 def load_ipython_extension(ip):
    483     """
    484     Load the extension in IPython.
    485     """
    486     # this modifies ip
    487     SageCustomizations(shell=ip)

/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc in load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    472     def wrapper(*args, **kwargs):
    473         if not wrapper.has_run:
    474             result = func(*args, **kwargs)
    475             wrapper.has_run = True
    476             return result
    477     wrapper.has_run = False
    478     return wrapper
    479
    480
    481 @run_once
    482 def load_ipython_extension(ip):
    483     """
    484     Load the extension in IPython.
    485     """
    486     # this modifies ip
--> 487     SageCustomizations(shell=ip)
        global SageCustomizations = <class 'sage.repl.ipython_extension.SageCustomizations'>
        global shell = undefined
        ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7fa7aa3d6d10>

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

/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/all.py in <module>()
     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 # This must come before Calculus -- it initializes the Pynac library.
--> 108 import sage.symbolic.pynac
        global sage.symbolic.pynac = undefined
    109
    110 from sage.modules.all    import *
    111 from sage.monoids.all    import *
    112 from sage.algebras.all   import *
    113 from sage.modular.all    import *
    114 from sage.sat.all        import *
    115 from sage.schemes.all    import *
    116 from sage.graphs.all     import *
    117 from sage.groups.all     import *
    118 from sage.databases.all  import *
    119 from sage.categories.all import *
    120 from sage.sets.all       import *
    121 from sage.probability.all import *
    122 from sage.interfaces.all import *
    123

ImportError: /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/symbolic/pynac.so: undefined symbol: _ZN5GiNaC8constantC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPFNS_2exEjP7_objectERKS6_j

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

Ralf Stephan

unread,
Sep 16, 2016, 4:37:22 AM9/16/16
to sage-support
Looks like C++ ABI mismatch. While gcc-4.8.4 should work
you maybe want to install a newer version. What Sage version
is this?

Fabio Di Cosmo

unread,
Sep 20, 2016, 4:39:02 PM9/20/16
to sage-s...@googlegroups.com
***************************************************************************

IPython post-mortem report

{'commit_hash': u'b630b41',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': '/usr/lib/sagemath/local/lib/python2.7/site-packages/IPython',
 'ipython_version': '4.2.1',
 'os_name': 'posix',
 'platform': 'Linux-4.4.0-38-generic-x86_64-with-debian-stretch-sid',

 'sys_executable': '/usr/lib/sagemath/local/bin/python',
 'sys_platform': 'linux2',
 'sys_version': '2.7.10 (default, Aug  6 2016, 15:34:26) \n[GCC 4.8.4]'}

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



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

Crash traceback:

---------------------------------------------------------------------------
---------------------------------------------------------------------------
ImportError               Python 2.7.10: /usr/lib/sagemath/local/bin/python
                                                   Tue Sep 20 22:35:11 2016

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/lib/sagemath/src/bin/sage-ipython in <module>()
      1 #!/usr/bin/env python
      2 # -*- coding: utf-8 -*-
      3 """
      4 Sage IPython startup script.
      5 """
      6
      7 # Install extra readline commands before IPython initialization
      8 from sage.repl.readline_extra_commands import *
      9
     10 from sage.repl.interpreter import SageTerminalApp
     11
     12 app = SageTerminalApp.instance()
---> 13 app.initialize()
        global app.initialize = <bound method SageTerminalApp.initialize of <sage.repl.interpreter.SageTerminalApp object at 0x7f82b5cca550>>

     14 app.start()

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

/usr/lib/sagemath/local/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={})
     59
     60 #-----------------------------------------------------------------------------
     61 # Application class
     62 #-----------------------------------------------------------------------------
     63
     64 @decorator
     65 def catch_config_error(method, app, *args, **kwargs):
     66     """Method decorator for catching invalid config (Trait/ArgumentErrors) during init.
     67
     68     On a TraitError (generally caused by bad config), this will print the trait's
     69     message, and exit the app.
     70    
     71     For use on init methods, to prevent invoking excepthook on invalid input.
     72     """
     73     try:
---> 74         return method(app, *args, **kwargs)
        method = <function initialize at 0x7f82af3668c0>
        app = <sage.repl.interpreter.SageTerminalApp object at 0x7f82b5cca550>
        self.init_shell = <bound method SageTerminalApp.init_shell of <sage.repl.interpreter.SageTerminalApp object at 0x7f82b5cca550>>
        self.shell.extension_manager.load_extension = <bound method ExtensionManager.load_extension of <IPython.core.extensions.ExtensionManager object at 0x7f82ad25e450>>

        global SAGE_EXTENSION = 'sage'
    799
    800

/usr/lib/sagemath/local/lib/python2.7/site-packages/IPython/core/extensions.pyc in load_extension(self=<IPython.core.extensions.ExtensionManager object>, module_str='sage')
     71
     72         Returns the string "already loaded" if the extension is already loaded,
     73         "no load function" if the module doesn't have a load_ipython_extension
     74         function, or None if it succeeded.
     75         """
     76         if module_str in self.loaded:
     77             return "already loaded"
     78        
     79         from IPython.utils.syspathcontext import prepended_to_syspath
     80        
     81         with self.shell.builtin_trap:
     82             if module_str not in sys.modules:
     83                 with prepended_to_syspath(self.ipython_extension_dir):
     84                     __import__(module_str)
     85             mod = sys.modules[module_str]
---> 86             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 0x7f82ad25e450>>
        mod.load_ipython_extension = <function load_ipython_extension at 0x7f82b5cc5de8>
        self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f82af302d10>

    134             return True
    135
    136     def _call_unload_ipython_extension(self, mod):
    137         if hasattr(mod, 'unload_ipython_extension'):
    138             mod.unload_ipython_extension(self.shell)
    139             return True
    140
    141     def install_extension(self, url, filename=None):
    142         """Download and install an IPython extension.
    143
    144         If filename is given, the file will be so named (inside the extension
    145         directory). Otherwise, the name from the URL will be used. The file must
    146         have a .py or .zip extension; otherwise, a ValueError will be raised.
    147
    148         Returns the full path to the installed file.

/usr/lib/sagemath/local/lib/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 0x7f82ad26f398>
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f82af302d10>,)


/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,), **kwargs={})
    459         ....:     if work:
    460         ....:         return 'foo worked'
    461         ....:     raise RuntimeError("foo didn't work")
    462         sage: foo(False)
    463         Traceback (most recent call last):
    464         ...
    465         RuntimeError: foo didn't work
    466         sage: foo(True)
    467         'foo worked'
    468         sage: foo(False)
    469         sage: foo(True)
    470     """
    471     @wraps(func)
    472     def wrapper(*args, **kwargs):
    473         if not wrapper.has_run:
--> 474             result = func(*args, **kwargs)
        result = undefined
        global func = undefined
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f82af302d10>,)
        ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f82af302d10>

Eric Gourgoulhon

unread,
Sep 23, 2016, 10:49:28 AM9/23/16
to sage-support

I guess this is SageMath 7.3 from the AIMS PPA, installed on Ubuntu 16.04. See
https://groups.google.com/d/msg/sage-devel/z1XQDRt-OFs/hnYuxcleBgAJ
for an update on this.

leif

unread,
Sep 27, 2016, 10:20:50 AM9/27/16
to sage-s...@googlegroups.com
FWIW, I replied to the exact same crash report of September 11th.


Orthogonal to the C++ ABI issues, we really need to patch / modify
IPython (and Python) to get *meaningful* crash reports (and /correct/
output for the system Sage was built on and the one it is actually
running on).

As is, the "crash reports" (I wouldn't say an import error is a crash
anyway) are mainly useless spam, at least when the reporters in addition
only rarely answer questions from replies, of which a couple weren't
necessary with proper generated system information either.


-leif


Reply all
Reply to author
Forward
0 new messages