Hi I have compiled sage 8.9 on a KVM used as a master image for a computer lab. The CPU is presented as model name : Intel Xeon E3-12xx v2 (Ivy Bridge)
Imaging is using systemimager based on rsync. On the newer lab machines with Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz the sage copied to the lab machines works fine. On the older lab machines with Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz there is a crash as attached. Is there a flag I can set at compile time to compile for the older CPUs by disabling use of some instruction not available on the older CPUs, which is what I suspect is happening? Regards, Jan -- .~. /V\ Jan Groenewald /( )\ www.aims.ac.za ^^-^^ -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CAAg%3Dp_1Z_MuZ2r%2Bihgq9BQAhPntVuFboW58xE75rLigm0oYS%3Dg%40mail.gmail.com.
*************************************************************************** IPython post-mortem report {'commit_hash': u'033ab93c7', 'commit_source': 'installation', 'default_encoding': 'UTF-8', 'ipython_path': '/srv/sage-8.9/local/lib/python2.7/site-packages/IPython', 'ipython_version': '5.8.0', 'os_name': 'posix', 'platform': 'Linux-4.19.0-6-amd64-x86_64-with-debian-buster', 'sys_executable': '/srv/sage-8.9/local/bin/python2', 'sys_platform': 'linux2', 'sys_version': '2.7.15 (default, Sep 30 2019, 12:04:00) \n[GCC 8.3.0]'} *************************************************************************** *************************************************************************** Crash traceback: --------------------------------------------------------------------------- --------------------------------------------------------------------------- SignalError Python 2.7.15: /srv/sage-8.9/local/bin/python2 Tue Oct 1 11:28:58 2019 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. /srv/sage-8.9/src/bin/sage-ipython in <module>() 1 #!/usr/bin/env sage-python23 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 SageTerminalApp.initialize of <sage.repl.interpreter.SageTerminalApp object at 0x7f7bb7a19b10>> 16 app.start() </srv/sage-8.9/local/lib/python2.7/site-packages/decorator.pyc:decorator-gen-110> in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None) /srv/sage-8.9/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={}) 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 0x7f7bb68378c0> app = <sage.repl.interpreter.SageTerminalApp object at 0x7f7bb7a19b10> 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 /srv/sage-8.9/local/lib/python2.7/site-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 0x7f7bb7a19b10>> 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, /srv/sage-8.9/local/lib/python2.7/site-packages/sage/repl/interpreter.pyc in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>) 772 self.shell.has_sage_extensions = SAGE_EXTENSION in self.extensions 773 774 # Load the %lprun extension if available 775 try: 776 import line_profiler 777 except ImportError: 778 pass 779 else: 780 self.extensions.append('line_profiler') 781 782 if self.shell.has_sage_extensions: 783 self.extensions.remove(SAGE_EXTENSION) 784 785 # load sage extension here to get a crash if 786 # something is wrong with the sage library --> 787 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 0x7f7bb75427d0>> global SAGE_EXTENSION = 'sage' 788 789 /srv/sage-8.9/local/lib/python2.7/site-packages/IPython/core/extensions.pyc in load_extension(self=<IPython.core.extensions.ExtensionManager object>, module_str='sage') 70 71 Returns the string "already loaded" if the extension is already loaded, 72 "no load function" if the module doesn't have a load_ipython_extension 73 function, or None if it succeeded. 74 """ 75 if module_str in self.loaded: 76 return "already loaded" 77 78 from IPython.utils.syspathcontext import prepended_to_syspath 79 80 with self.shell.builtin_trap: 81 if module_str not in sys.modules: 82 with prepended_to_syspath(self.ipython_extension_dir): 83 __import__(module_str) 84 mod = sys.modules[module_str] ---> 85 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 0x7f7bb75427d0>> mod = <module 'sage' from '/srv/sage-8.9/local/lib/python2.7/site-packages/sage/__init__.pyc'> 86 self.loaded.add(module_str) 87 else: 88 return "no load function" 89 90 def unload_extension(self, module_str): 91 """Unload an IPython extension by its module name. 92 93 This function looks up the extension's name in ``sys.modules`` and 94 simply calls ``mod.unload_ipython_extension(self)``. 95 96 Returns the string "no unload function" if the extension doesn't define 97 a function to unload itself, "not loaded" if the extension isn't loaded, 98 otherwise None. 99 """ 100 if module_str not in self.loaded: /srv/sage-8.9/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 '/srv/sage-8.9/local/lib/python2.7/site-packages/sage/__init__.pyc'>) 117 """ 118 from IPython.utils.syspathcontext import prepended_to_syspath 119 120 if (module_str in self.loaded) and (module_str in sys.modules): 121 self.unload_extension(module_str) 122 mod = sys.modules[module_str] 123 with prepended_to_syspath(self.ipython_extension_dir): 124 reload(mod) 125 if self._call_load_ipython_extension(mod): 126 self.loaded.add(module_str) 127 else: 128 self.load_extension(module_str) 129 130 def _call_load_ipython_extension(self, mod): 131 if hasattr(mod, 'load_ipython_extension'): --> 132 mod.load_ipython_extension(self.shell) mod.load_ipython_extension = <function load_ipython_extension at 0x7f7bb7fd87d0> self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f7bb684f9d0> 133 return True 134 135 def _call_unload_ipython_extension(self, mod): 136 if hasattr(mod, 'unload_ipython_extension'): 137 mod.unload_ipython_extension(self.shell) 138 return True 139 140 def install_extension(self, url, filename=None): 141 """Download and install an IPython extension. 142 143 If filename is given, the file will be so named (inside the extension 144 directory). Otherwise, the name from the URL will be used. The file must 145 have a .py or .zip extension; otherwise, a ValueError will be raised. 146 147 Returns the full path to the installed file. /srv/sage-8.9/local/lib/python2.7/site-packages/sage/__init__.pyc 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 0x7f7bb4940ed8> args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f7bb684f9d0>,) 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) /srv/sage-8.9/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc 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 0x7f7bb684f9d0>,) 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) /srv/sage-8.9/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc 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 0x7f7bb684f9d0> /srv/sage-8.9/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>) 418 def __init__(self, shell=None): 419 """ 420 Initialize the Sage plugin. 421 """ 422 self.shell = shell 423 424 self.auto_magics = SageMagics(shell) 425 self.shell.register_magics(self.auto_magics) 426 427 import sage.misc.edit_module as edit_module 428 self.shell.set_hook('editor', edit_module.edit_devel) 429 430 self.init_inspector() 431 self.init_line_transforms() 432 --> 433 import sage.all # until sage's import hell is fixed sage.all = undefined 434 435 self.shell.verbose_quit = True 436 self.set_quit_hook() 437 438 self.register_interface_magics() 439 440 if SAGE_IMPORTALL == 'yes': 441 self.init_environment() 442 443 def register_interface_magics(self): 444 """ 445 Register magics for each of the Sage interfaces 446 """ 447 from sage.repl.interface_magic import InterfaceMagic 448 InterfaceMagic.register_all(self.shell) /srv/sage-8.9/local/lib/python2.7/site-packages/sage/all.py in <module>() 75 76 # This import also sets up the interrupt handler 77 from cysignals.signals import (AlarmInterrupt, SignalError, 78 sig_on_reset as sig_on_count) 79 80 from time import sleep 81 from functools import reduce # in order to keep reduce in python3 82 83 import sage.misc.lazy_import 84 from sage.misc.all import * # takes a while 85 from sage.typeset.all import * 86 from sage.repl.all import * 87 88 from sage.misc.sh import sh 89 ---> 90 from sage.libs.all import * global sage.libs.all = undefined 91 from sage.data_structures.all import * 92 from sage.doctest.all import * 93 94 from sage.structure.all import * 95 from sage.rings.all import * 96 from sage.arith.all import * 97 from sage.matrix.all import * 98 99 from sage.symbolic.all import * 100 from sage.modules.all import * 101 from sage.monoids.all import * 102 from sage.algebras.all import * 103 from sage.modular.all import * 104 from sage.sat.all import * 105 from sage.schemes.all import * /srv/sage-8.9/local/lib/python2.7/site-packages/sage/libs/all.py in <module>() 1 from __future__ import absolute_import 2 ----> 3 import sage.libs.ntl.all as ntl global sage.libs.ntl.all = undefined global ntl = undefined 4 5 from sage.libs.pari.all import pari, pari_gen, PariError 6 7 import sage.libs.symmetrica.all as symmetrica 8 9 from sage.misc.lazy_import import lazy_import 10 lazy_import('sage.libs.gap.libgap', 'libgap') 11 12 lazy_import('sage.libs.eclib.all', ('mwrank_EllipticCurve', 13 'mwrank_MordellWeil', 'mwrank_initprimes', 'CremonaModularSymbols')) 14 lazy_import('sage.libs.eclib.all', 'get_precision', 'mwrank_get_precision') 15 lazy_import('sage.libs.eclib.all', 'set_precision', 'mwrank_set_precision') /srv/sage-8.9/local/lib/python2.7/site-packages/sage/libs/ntl/all.py in <module>() 9 #***************************************************************************** 10 # Copyright (C) 2005 William Stein <wst...@gmail.com> 11 # 12 # Distributed under the terms of the GNU General Public License (GPL) 13 # 14 # This code is distributed in the hope that it will be useful, 15 # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 # General Public License for more details. 18 # 19 # The full text of the GPL is available at: 20 # 21 # http://www.gnu.org/licenses/ 22 #***************************************************************************** 23 ---> 24 from sage.libs.ntl.ntl_ZZ import ( global sage.libs.ntl.ntl_ZZ = undefined global ntl_setSeed = undefined global ntl_ZZ = undefined global ZZ = undefined global randomBnd = undefined global ZZ_random = undefined global randomBits = undefined global ZZ_random_bits = undefined 25 ntl_setSeed, \ 26 ntl_ZZ as ZZ, 27 randomBnd as ZZ_random, 28 randomBits as ZZ_random_bits ) 29 30 from sage.libs.ntl.ntl_ZZ_pContext import ntl_ZZ_pContext as ZZ_pContext 31 32 from sage.libs.ntl.ntl_ZZ_p import ( 33 ntl_ZZ_p as ZZ_p, 34 ntl_ZZ_p_random_element as ZZ_p_random ) 35 36 from sage.libs.ntl.ntl_ZZX import ( 37 ntl_ZZX as ZZX, 38 zero_ZZX, one_ZZX ) 39 /srv/sage-8.9/local/lib/python2.7/site-packages/sage/libs/ntl/ntl_ZZ.pyx in init sage.libs.ntl.ntl_ZZ (build/cythonized/sage/libs/ntl/ntl_ZZ.cpp:9102)() 444 445 sage: ntl.ntl_setSeed(10) 446 sage: ntl.ZZ_random(1000) 447 935 448 """ 449 cdef ntl_ZZ seed = ntl_ZZ(1) 450 if x is None: 451 from random import randint 452 seed = ntl_ZZ(randint(0,int(2)**64)) 453 else: 454 seed = ntl_ZZ(x) 455 sig_on() 456 ZZ_SetSeed(seed.x) 457 sig_off() 458 --> 459 ntl_setSeed() global ntl_setSeed = <built-in function ntl_setSeed> 460 461 462 def randomBnd(q): 463 r""" 464 Return a random number in the range [0,n). 465 466 According to the NTL documentation, these numbers are 467 "cryptographically strong"; of course, that depends in part on 468 how they are seeded. 469 470 EXAMPLES:: 471 472 sage: [ntl.ZZ_random(99999) for i in range(5)] 473 [30675, 84282, 80559, 6939, 44798] 474 /srv/sage-8.9/local/lib/python2.7/site-packages/sage/libs/ntl/ntl_ZZ.pyx in sage.libs.ntl.ntl_ZZ.ntl_setSeed (build/cythonized/sage/libs/ntl/ntl_ZZ.cpp:6108)() 440 979 441 442 Now you can call this function, and it will not be overridden until 443 the next time the main Sage random number seed is changed:: 444 445 sage: ntl.ntl_setSeed(10) 446 sage: ntl.ZZ_random(1000) 447 935 448 """ 449 cdef ntl_ZZ seed = ntl_ZZ(1) 450 if x is None: 451 from random import randint 452 seed = ntl_ZZ(randint(0,int(2)**64)) 453 else: 454 seed = ntl_ZZ(x) --> 455 sig_on() global sig_on = undefined 456 ZZ_SetSeed(seed.x) 457 sig_off() 458 459 ntl_setSeed() 460 461 462 def randomBnd(q): 463 r""" 464 Return a random number in the range [0,n). 465 466 According to the NTL documentation, these numbers are 467 "cryptographically strong"; of course, that depends in part on 468 how they are seeded. 469 470 EXAMPLES:: SignalError: Illegal instruction *************************************************************************** History of session input: *** Last line of input (may not be in above history):