On Thu, Apr 11, 2024 at 09:27:15AM +0300, Georgi Guninski wrote:
> Giving short testcase, can someone else reproduce it?
> Also attaching backtrace.
yes, I can reproduce this on a recent 10.4.beta - the backtrace I get it
more or less the same as the one attached - and it's in an unexpected to
me place, in src/sage/rings/finite_rings/integer_mod_ring.py.
If I read the backtrace right,
sa2si_ZZmod() - in Cython interface to Singular -
is called from Python code, then sa2si_ZZmod() calls characteristic() in the line
nr2mModul = d.parent().characteristic()
As sa2si_ZZmod() is declared noexcept(), we see
Exception ignored in: 'sage.libs.singular.singular.sa2si_ZZmod'
But then in characteristic() an attempt to handle the exception is made,
and it leads to a crash. Should
nr2mModul = d.parent().characteristic()
be wrapped in some cysignals functions, or we currently just have to
means to deal with it?
--------------------------------------------------------------------------------------------------------
KeyboardInterrupt:
sage: x,y=var('x,y');n=10**6
....: while True: so=solve_mod(x*y-1,n)
^C---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
File /mnt/opt/Sage/sage-dev/src/sage/rings/finite_rings/integer_mod_ring.py:1029, in IntegerModRing_generic.characteristic(self)
1025 ans.append(Factorization([(p, e - 1)]) *
1026 factor(p - 1, int_=(self.__order < 2**31)))
1027 return ans
-> 1029 def characteristic(self):
1030 """
1031 EXAMPLES::
1032
(...)
1038 18
1039 """
1040 return self.__order
File src/cysignals/signals.pyx:341, in cysignals.signals.python_check_interrupt()
KeyboardInterrupt:
Exception ignored in: 'sage.libs.singular.singular.sa2si_ZZmod'
Traceback (most recent call last):
File "/mnt/opt/Sage/sage-dev/src/sage/rings/finite_rings/integer_mod_ring.py", line 1029, in characteristic
def characteristic(self):
File "src/cysignals/signals.pyx", line 341, in cysignals.signals.python_check_interrupt
KeyboardInterrupt:
------------------------------------------------------------------------
/usr/lib/python3.11/site-packages/cysignals/
signals.cpython-311-x86_64-linux-gnu.so(+0x9beb)[0x7f0fea9a6beb]
/usr/lib/python3.11/site-packages/cysignals/
signals.cpython-311-x86_64-linux-gnu.so(+0x9caf)[0x7f0fea9a6caf]
/usr/lib/python3.11/site-packages/cysignals/
signals.cpython-311-x86_64-linux-gnu.so(+0xb7d0)[0x7f0fea9a87d0]
/lib64/libc.so.6(+0x39660)[0x7f0ff85a0660]
/usr/lib64/libgmp.so.10(__gmpz_cmp_ui+0x0)[0x7f0fe9b96a20]
/usr/lib64/
libpolys-4.3.2.so(+0xf9dce)[0x7f0e9ceb1dce]
/mnt/opt/Sage/sage-dev/src/sage/libs/singular/
polynomial.cpython-311-x86_64-linux-gnu.so(+0x7427)[0x7f0e9d22d427]
/mnt/opt/Sage/sage-dev/src/sage/rings/polynomial/
multi_polynomial_libsingular.cpython-311-x86_64-linux-gnu.so(+0x4c072)[0x7f0e9d284072]
/mnt/opt/Sage/sage-dev/src/sage/rings/polynomial/
multi_polynomial_libsingular.cpython-311-x86_64-linux-gnu.so(+0x4c908)[0x7f0e9d284908]
/usr/lib64/libpython3.11.so.1.0(+0x1acf22)[0x7f0ff88d1f22]
/mnt/opt/Sage/sage-dev/src/sage/rings/polynomial/
polynomial_element.cpython-311-x86_64-linux-gnu.so(+0x2d6ea)[0x7f0fa1bb16ea]
/mnt/opt/Sage/sage-dev/src/sage/rings/polynomial/
polynomial_element.cpython-311-x86_64-linux-gnu.so(+0x2dc8d)[0x7f0fa1bb1c8d]
/usr/lib64/libpython3.11.so.1.0(+0x1acf22)[0x7f0ff88d1f22]
/mnt/opt/Sage/sage-dev/src/sage/categories/
map.cpython-311-x86_64-linux-gnu.so(+0x13db0)[0x7f0fe93e8db0]
/mnt/opt/Sage/sage-dev/src/sage/structure/
parent.cpython-311-x86_64-linux-gnu.so(+0x2dbb9)[0x7f0fe9445bb9]
/mnt/opt/Sage/sage-dev/src/sage/rings/polynomial/
multi_polynomial_libsingular.cpython-311-x86_64-linux-gnu.so(+0x6fe67)[0x7f0e9d2a7e67]
/usr/lib64/libpython3.11.so.1.0(_PyObject_Call+0x68)[0x7f0ff887fa28]
/usr/lib64/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0x57e3)[0x7f0ff8825613]
/usr/lib64/libpython3.11.so.1.0(+0x1741f5)[0x7f0ff88991f5]
/usr/lib64/libpython3.11.so.1.0(+0x252600)[0x7f0ff8977600]
/usr/lib64/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0x6daf)[0x7f0ff8826bdf]
/usr/lib64/libpython3.11.so.1.0(+0x1741f5)[0x7f0ff88991f5]
/usr/lib64/libpython3.11.so.1.0(+0x186381)[0x7f0ff88ab381]
/usr/lib64/libpython3.11.so.1.0(+0x1867cc)[0x7f0ff88ab7cc]
/usr/lib64/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0x7034)[0x7f0ff8826e64]
/usr/lib64/libpython3.11.so.1.0(PyEval_EvalCode+0x22c)[0x7f0ff897fecc]
/usr/lib64/libpython3.11.so.1.0(+0x255b50)[0x7f0ff897ab50]
/usr/lib64/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0x699d)[0x7f0ff88267cd]
/usr/lib64/libpython3.11.so.1.0(+0x1738dd)[0x7f0ff88988dd]
/usr/lib64/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0xa61d)[0x7f0ff882a44d]
/usr/lib64/libpython3.11.so.1.0(+0x1738dd)[0x7f0ff88988dd]
/usr/lib64/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0xa61d)[0x7f0ff882a44d]
/usr/lib64/libpython3.11.so.1.0(+0x174a95)[0x7f0ff8899a95]
/usr/lib64/libpython3.11.so.1.0(+0x1681c4)[0x7f0ff888d1c4]
/usr/lib64/libpython3.11.so.1.0(PyObject_Vectorcall+0x33)[0x7f0ff8880313]
/usr/lib64/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0x42f8)[0x7f0ff8824128]
/usr/lib64/libpython3.11.so.1.0(PyEval_EvalCode+0x22c)[0x7f0ff897fecc]
/usr/lib64/libpython3.11.so.1.0(+0x2a5779)[0x7f0ff89ca779]
/usr/lib64/libpython3.11.so.1.0(_PyRun_SimpleFileObject+0x164)[0x7f0ff89cc074]
/usr/lib64/libpython3.11.so.1.0(_PyRun_AnyFileObject+0x3c)[0x7f0ff89cc6cc]
/usr/lib64/libpython3.11.so.1.0(Py_RunMain+0x880)[0x7f0ff89ecd50]
/usr/lib64/libpython3.11.so.1.0(Py_BytesMain+0x57)[0x7f0ff89ed2c7]
/lib64/libc.so.6(+0x23eea)[0x7f0ff858aeea]
/lib64/libc.so.6(__libc_start_main+0x85)[0x7f0ff858afa5]
python3(_start+0x21)[0x55b5f92ee081]
------------------------------------------------------------------------
Attaching gdb to process id 19968.
Traceback (most recent call last):
File "/usr/lib/python-exec/python3.11/cysignals-CSI", line 225, in <module>
main(args)
File "/usr/lib/python-exec/python3.11/cysignals-CSI", line 174, in main
trace = run_gdb(args.pid, not args.nocolor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python-exec/python3.11/cysignals-CSI", line 98, in run_gdb
stdout, stderr = cmd.communicate(gdb_commands(pid, color))
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python-exec/python3.11/cysignals-CSI", line 71, in gdb_commands
with open(script, 'rb') as f:
^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/python-exec/python3.11/../share/cysignals/cysignals-CSI-helper.py'
------------------------------------------------------------------------
Unhandled SIGSEGV: A segmentation fault occurred.
This probably occurred because a *compiled* module has a bug
in it and is not properly wrapped with sig_on(), sig_off().
Python will now terminate.
------------------------------------------------------------------------
/mnt/opt/Sage/sage-dev/src/bin/sage-python: line 2: 19968 Segmentation fault sage -python "$@"
dima@hilbert /mnt/opt/Sage/sage-dev $
> On second thought, if I don't crash, there could be some memory
> corruption and sage runs with screwed memory.
> ```
> x,y=var('x,y');n=10**6
> while True: so=solve_mod(x*y-1,n)
> #press CTL-C, crashes with probability about 1/3
> ```
>
[...]
Dima