Same circumstances as in the previous case : on Debian testing running
on core i7 + 16 GB RAM, after upgrading Sage 9.5.beta7 compiled from a
git tree to 9.5.beta8, Sage crashes at startup. Crash report enclosed
I'll try the same steps as in the last occurrence...
--
Emmanuel Charpentier
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sage-support/14e68240fe2d60a5c5e1b718b0c3d1d1e6eb13a1.camel%40free.fr.
***************************************************************************
IPython post-mortem report
{'commit_hash': 'd6d0edce10',
'commit_source': 'installation',
'default_encoding': 'utf-8',
'ipython_path':
'/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/IPython',
'ipython_version': '7.27.0',
'os_name': 'posix',
'platform': 'Linux-5.15.0-2-amd64-x86_64-with-glibc2.33',
'sys_executable':
'/usr/local/sage-9/local/var/lib/sage/venv-python3.9/bin/python3',
'sys_platform': 'linux',
'sys_version': '3.9.9 (main, Nov 16 2021, 10:24:31) \n[GCC 11.2.0]'}
***************************************************************************
***************************************************************************
Crash traceback:
---------------------------------------------------------------------------
---------------------------------------------------------------------------
ImportErrorPython 3.9.9:
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/bin/python3
Sat Dec 18 10:31:33 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/local/sage-9/src/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 0x7f68d3227760>>
16 app.start()
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/traitlets/config/application.py
in inner(app=<sage.repl.interpreter.SageTerminalApp object>, *args=(),
**kwargs={})
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 def catch_config_error(method):
78 """Method decorator for catching invalid config
(Trait/ArgumentErrors) during init.
79
80 On a TraitError (generally caused by bad config), this will print
the trait's
81 message, and exit the app.
82
83 For use on init methods, to prevent invoking excepthook on invalid
input.
84 """
85 @functools.wraps(method)
86 def inner(app, *args, **kwargs):
87 try:
---> 88 return method(app, *args, **kwargs)
global method = undefined
app = <sage.repl.interpreter.SageTerminalApp object at 0x7f68d3227760>
args = ()
kwargs = {}
89 except (TraitError, ArgumentError) as e:
90 app.log.fatal("Bad config encountered during
initialization: %s", e)
91 app.log.debug("Config at the time: %s", app.config)
92 app.exit(1)
93
94 return inner
95
96 class ApplicationError(Exception):
97 pass
98
99
100 class LevelFormatter(logging.Formatter):
101 """Formatter with additional `highlevel` record
102
103 This field is empty if log level is less than highlevel_limit,
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-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 0x7f68d3227760>>
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/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/repl/interpreter.py
in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>)
774
775 # Load the %lprun extension if available
776 try:
777 import line_profiler
778 assert line_profiler # silence pyflakes
779 except ImportError:
780 pass
781 else:
782 self.extensions.append('line_profiler')
783
784 if self.shell.has_sage_extensions:
785 self.extensions.remove(SAGE_EXTENSION)
786
787 # load sage extension here to get a crash if
788 # something is wrong with the sage library
--> 789 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 0x7f68cb0ed550>>
global SAGE_EXTENSION = 'sage'
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-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 0x7f68cb0ed550>>
mod = <module 'sage' from
'/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-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/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/IPython/core/extensions.py
in _call_load_ipython_extension(self=<IPython.core.extensions.ExtensionManager
object>, mod=<module 'sage' from
'/usr/local/sage-9/local/var....9/lib/python3.9/site-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
0x7f68d312dca0>
self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell object
at 0x7f68d19983a0>
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/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/repl/__init__.py
in
load_ipython_extension(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell
object>,))
1 # IPython calls this when "%load_ext sage.repl" is used.
2 # The Sage application loads it when starting up.
3 def load_ipython_extension(*args):
4 import sage.repl.ipython_extension
----> 5 sage.repl.ipython_extension.load_ipython_extension(*args)
sage.repl.ipython_extension.load_ipython_extension = <function
load_ipython_extension at 0x7f68cae669d0>
args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at
0x7f68d19983a0>,)
6
7
8 # The above used to be in sage.__init__, allowing users to use
"%load_ext sage".
9 # But we are clearing out the __init__.py file as a preparation for
10 # making sage a native namespace package.
11 #
12 # So we make "%load_ext sage" work by monkey-patching the function
13 # into the sage package upon importing sage.repl.
14 import sage
15 sage.load_ipython_extension = load_ipython_extension
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/repl/ipython_extension.py
in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell
object>,), **kwargs={})
602 ....: if work:
603 ....: return 'foo worked'
604 ....: raise RuntimeError("foo didn't work")
605 sage: foo(False)
606 Traceback (most recent call last):
607 ...
608 RuntimeError: foo didn't work
609 sage: foo(True)
610 'foo worked'
611 sage: foo(False)
612 sage: foo(True)
613 """
614 @wraps(func)
615 def wrapper(*args, **kwargs):
616 if not wrapper.has_run:
--> 617 result = func(*args, **kwargs)
result = undefined
global func = undefined
args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at
0x7f68d19983a0>,)
kwargs = {}
618 wrapper.has_run = True
619 return result
620 wrapper.has_run = False
621 return wrapper
622
623
624 @run_once
625 def load_ipython_extension(ip):
626 """
627 Load the extension in IPython.
628 """
629 # this modifies ip
630 SageCustomizations(shell=ip)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/repl/ipython_extension.py
in
load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell
object>)
615 def wrapper(*args, **kwargs):
616 if not wrapper.has_run:
617 result = func(*args, **kwargs)
618 wrapper.has_run = True
619 return result
620 wrapper.has_run = False
621 return wrapper
622
623
624 @run_once
625 def load_ipython_extension(ip):
626 """
627 Load the extension in IPython.
628 """
629 # this modifies ip
--> 630 SageCustomizations(shell=ip)
global SageCustomizations = <class
'sage.repl.ipython_extension.SageCustomizations'>
global shell = undefined
ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at
0x7f68d19983a0>
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/repl/ipython_extension.py
in __init__(self=<sage.repl.ipython_extension.SageCustomizations object>,
shell=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
419 def __init__(self, shell=None):
420 """
421 Initialize the Sage plugin.
422 """
423 self.shell = shell
424
425 self.auto_magics = SageMagics(shell)
426 self.shell.register_magics(self.auto_magics)
427
428 import sage.misc.edit_module as edit_module
429 self.shell.set_hook('editor', edit_module.edit_devel)
430
431 self.init_inspector()
432 self.init_line_transforms()
433
--> 434 import sage.all # until sage's import hell is fixed
sage.all = undefined
435
436 self.shell.verbose_quit = True
437 self.set_quit_hook()
438
439 self.register_interface_magics()
440
441 if SAGE_IMPORTALL == 'yes':
442 self.init_environment()
443
444 def register_interface_magics(self):
445 """
446 Register magics for each of the Sage interfaces
447 """
448 from sage.repl.interface_magic import InterfaceMagic
449 InterfaceMagic.register_all(self.shell)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/all.py
in <module>
107 from functools import reduce # in order to keep reduce in python3
108
109 import sage.misc.lazy_import
110
111 from sage.misc.all import * # takes a while
112 from sage.typeset.all import *
113 from sage.repl.all import *
114
115 from sage.misc.sh import sh
116
117 from sage.libs.all import *
118 from sage.data_structures.all import *
119 from sage.doctest.all import *
120
121 from sage.structure.all import *
--> 122 from sage.rings.all import *
global sage.rings.all = undefined
123 from sage.arith.all import *
124 from sage.matrix.all import *
125
126 from sage.symbolic.all import *
127 from sage.modules.all import *
128 from sage.monoids.all import *
129 from sage.algebras.all import *
130 from sage.modular.all import *
131 from sage.sat.all import *
132 from sage.schemes.all import *
133 from sage.graphs.all import *
134 from sage.groups.all import *
135 from sage.arith.power import generic_power as power
136 from sage.databases.all import *
137 from sage.categories.all import *
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/all.py
in <module>
72 from .real_mpfr import (RealField, RR,
73 create_RealNumber as RealNumber) # this is
used by the preparser to wrap real literals -- very important.
74 Reals = RealField
75
76 from .real_double import RealDoubleField, RDF, RealDoubleElement
77
78 from .real_lazy import RealLazyField, RLF, ComplexLazyField, CLF
79
80 from sage.rings.real_arb import RealBallField, RBF
81
82 # Polynomial Rings and Polynomial Quotient Rings
83 from .polynomial.all import *
84
85
86 # Algebraic numbers
---> 87 from .qqbar import (AlgebraicRealField, AA,
global qqbar = undefined
global AlgebraicRealField = undefined
global AA = undefined
global AlgebraicReal = undefined
global AlgebraicField = undefined
global QQbar = undefined
global AlgebraicNumber = undefined
global number_field_elements_from_algebraics = undefined
88 AlgebraicReal,
89 AlgebraicField, QQbar,
90 AlgebraicNumber,
91 number_field_elements_from_algebraics)
92 from .universal_cyclotomic_field import UniversalCyclotomicField, E
93
94 # Intervals
95 from .real_mpfi import (RealIntervalField,
96 RIF,
97 RealInterval)
98
99 # Complex numbers
100 from .complex_mpfr import ComplexField
101 from .complex_mpfr import create_ComplexNumber as ComplexNumber
102 Complexes = ComplexField
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/qqbar.py
in <module>
2723
2724 if single_number:
2725 nums = nums[0]
2726
2727 if same_field:
2728 hom = fld.hom([exact_generator], codomain=algebraic_field)
2729
2730 return (fld, nums, hom)
2731
2732
2733 # Cache some commonly-used polynomial rings
2734 QQx = QQ['x']
2735 QQx_x = QQx.gen()
2736 QQy = QQ['y']
2737 QQy_y = QQy.gen()
-> 2738 QQxy = QQ['x', 'y']
global QQxy = undefined
global QQ = Rational Field
2739 QQxy_x = QQxy.gen(0)
2740 QQxy_y = QQxy.gen(1)
2741
2742
2743 def cmp_elements_with_same_minpoly(a, b, p):
2744 r"""
2745 Compare the algebraic elements ``a`` and ``b`` knowing that they
have the
2746 same minimal polynomial ``p``.
2747
2748 This is an helper function for comparison of algebraic elements
(i.e. the
2749 methods :meth:`AlgebraicNumber._richcmp_` and
2750 :meth:`AlgebraicReal._richcmp_`).
2751
2752 INPUT:
2753
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/structure/parent.pyx
in sage.structure.parent.Parent.__getitem__
(build/cythonized/sage/structure/parent.c:11409)()
1261 sage: class A(Parent):
1262 ....: def __init__(self):
1263 ....: Parent.__init__(self, category=As())
1264 sage: a = A()
1265 sage: a[1]
1266 'coucou'
1267 """
1268 try:
1269 meth = super(Parent, self).__getitem__
1270 except AttributeError:
1271 # needed when self is a Cython object
1272 try:
1273 meth = self.getattr_from_category('__getitem__')
1274 except AttributeError:
1275 return self.list()[n]
-> 1276 return meth(n)
global meth = undefined
global n = undefined
1277
1278
#########################################################################
1279 # Generators and Homomorphisms
1280
#########################################################################
1281
1282 def _is_valid_homomorphism_(self, codomain, im_gens, base_map=None):
1283 r"""
1284 Return True if ``im_gens`` defines a valid homomorphism
1285 from self to codomain; otherwise return False.
1286
1287 If determining whether or not a homomorphism is valid has not
1288 been implemented for this ring, then a NotImplementedError
exception
1289 is raised.
1290 """
1291 raise NotImplementedError("Verification of correctness of
homomorphisms from %s not yet implemented." % self)
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/categories/rings.py
in __getitem__(self=Rational Field, arg=('x', 'y'))
1161 and
elt.imag().is_zero()):
1162 emb = RLF(elt)
1163 else:
1164 emb = CLF(elt)
1165 return self.extension(minpolys[0], names[0],
embedding=emb)
1166 try:
1167 # Doing the extension all at once is best, if
possible...
1168 return self.extension(minpolys, names)
1169 except (TypeError, ValueError):
1170 # ...but we can also construct it iteratively
1171 return reduce(lambda R, ext: R.extension(*ext),
zip(minpolys, names), self)
1172
1173 # 2. Otherwise, try to return a polynomial ring
1174
1175 from sage.rings.polynomial.polynomial_ring_constructor
import PolynomialRing
-> 1176 return PolynomialRing(self, elts)
PolynomialRing = <function PolynomialRing at 0x7f68d1f701f0>
self = Rational Field
elts = ('x', 'y')
1177
1178 def free_module(self, base=None, basis=None, map=True):
1179 """
1180 Return a free module `V` over the specified subring
together with maps to and from `V`.
1181
1182 The default implementation only supports the case that the
base ring is the ring itself.
1183
1184 INPUT:
1185
1186 - ``base`` -- a subring `R` so that this ring is isomorphic
1187 to a finite-rank free `R`-module `V`
1188
1189 - ``basis`` -- (optional) a basis for this ring over the
base
1190
1191 - ``map`` -- boolean (default ``True``), whether to return
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/polynomial/polynomial_ring_constructor.py
in PolynomialRing(base_ring=Rational Field, *args=(('x', 'y'),), **kwds={})
632 names = normalize_names(n, names)
633
634 # At this point, we have only handled the "names" keyword if it was
635 # needed. Since we know the variable names, it would logically be
636 # an error to specify an additional "names" keyword. However,
637 # people often abuse the preparser with
638 # R.<x> = PolynomialRing(QQ, 'x')
639 # and we allow this for historical reasons. However, the names
640 # must be consistent!
641 if "names" in kwds:
642 kwnames = kwds.pop("names")
643 if kwnames != names:
644 raise TypeError("variable names specified twice
inconsistently: %r and %r" % (names, kwnames))
645
646 if multivariate or len(names) != 1:
--> 647 return _multi_variate(base_ring, names, **kwds)
global _multi_variate = <function _multi_variate at 0x7f6881964820>
base_ring = Rational Field
global names = undefined
kwds = {}
648 else:
649 return _single_variate(base_ring, names, **kwds)
650
651
652 def unpickle_PolynomialRing(base_ring, arg1=None, arg2=None,
sparse=False):
653 """
654 Custom unpickling function for polynomial rings.
655
656 This has the same positional arguments as the old
657 ``PolynomialRing`` constructor before :trac:`23338`.
658 """
659 args = [arg for arg in (arg1, arg2) if arg is not None]
660 return PolynomialRing(base_ring, *args, sparse=sparse)
661
662 from sage.misc.persist import register_unpickle_override
/usr/local/sage-9/local/var/lib/sage/venv-python3.9/lib/python3.9/site-packages/sage/rings/polynomial/polynomial_ring_constructor.py
in _multi_variate(base_ring=Rational Field, names=('x', 'y'), sparse=True,
order=Degree reverse lexicographic term order, implementation=None)
760 from sage.rings.polynomial.term_order import TermOrder
761 n = len(names)
762 order = TermOrder(order, n)
763
764 # "implementation" must be last
765 key = [base_ring, names, n, order, implementation]
766 R = _get_from_cache(key)
767 if R is not None:
768 return R
769
770 # Multiple arguments for the "implementation" keyword which actually
771 # yield the same implementation. We need this for caching.
772 implementation_names = set([implementation])
773
774 if implementation is None or implementation == "singular":
--> 775 from sage.rings.polynomial.multi_polynomial_libsingular import
MPolynomialRing_libsingular
global sage.rings.polynomial.multi_polynomial_libsingular = undefined
MPolynomialRing_libsingular = undefined
776 try:
777 R = MPolynomialRing_libsingular(base_ring, n, names, order)
778 except (TypeError, NotImplementedError):
779 if implementation is not None:
780 raise
781 else:
782 implementation_names.update([None, "singular"])
783
784 if R is None and implementation is None:
785 # Interpret implementation=None as implementation="generic"
786 implementation = "generic"
787 implementation_names.add(implementation)
788 key[-1] = implementation
789 R = _get_from_cache(key)
790
ImportError: libflint-2.8.2.so: cannot open shared object file: No such file or
directory
***************************************************************************
History of session input:
*** Last line of input (may not be in above history):