Sage Crash Report

27 views
Skip to first unread message

Fabio Di Cosmo

unread,
Sep 11, 2016, 12:44:07 PM9/11/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
                                                    Sun Sep 11 16:44:30
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 0x7f008d18c390>>
      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 0x7f00868268c0>
         app = <sage.repl.interpreter.SageTerminalApp object at
0x7f008d18c390>
         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 0x7f008d18c390>>
     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 0x7f0084724290>>
         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 0x7f0084724290>>
         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 0x7f008d187de8>
         self.shell =
<sage.repl.interpreter.SageTerminalInteractiveShell object at
0x7f00867c2590>
     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 0x7f008472f398>
         args = (<sage.repl.interpreter.SageTerminalInteractiveShell
object at 0x7f00867c2590>,)

/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 0x7f00867c2590>,)
         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 0x7f00867c2590>

/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

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

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










leif

unread,
Sep 11, 2016, 1:28:35 PM9/11/16
to sage-s...@googlegroups.com
Fabio Di Cosmo wrote:
> 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]'}
>
> ***************************************************************************
>
> <SNIP>
>
> 107 # This must come before Calculus -- it initializes the Pynac
> library.
> --> 108 import sage.symbolic.pynac
> global sage.symbolic.pynac = undefined
>
> ImportError:
> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/symbolic/pynac.so:
>
> undefined symbol:
> _ZN5GiNaC8constantC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPFNS_2exEjP7_objectERKS6_j
>
> ***************************************************************************

GiNaC::constant::constant(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, GiNaC::ex (*)(unsigned
int, _object*), std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, unsigned int)


Looks like you downloaded the wrong binary for your distro; your
standard C++ library apparently doesn't have a dual ABI.


-leif


leif

unread,
Sep 11, 2016, 4:18:20 PM9/11/16
to sage-s...@googlegroups.com
... or the latter rather the other way around:

It seems your Sage was originally built with / for an older Debian
version (presumably Wheezy / 7.x, with GCC 4.8), while (parts of) the
Sage library now got rebuilt with a newer compiler version, GCC 5.x or
6.x, which by default use a different C++ ABI than earlier versions,
such that some of the rebuilt parts are now incompatible to those built
with the older compiler.

So you'd either have to download the appropriate binary distribution of
Sage for your system/distro, or rebuild Sage with the native compiler.

It *might* be sufficient to just run

./sage -f pynac && make

but you may run into further similar errors later as well.


-leif


Reply all
Reply to author
Forward
0 new messages