I can confirm the rings/integer.pyx failure from running it in the shell.
sage: n = prod(primes_first_n(25))
sage: _ = n.divisors()
If I cancel the second line many time (after a few seconds each), I see an
increase in memory usage.
There doesn't seem to be a limit to it.
I can immitate the problem by the following (this is what divisors does
along the way):
sage: cython('''
....: from sage.rings.integer cimport Integer
....: from sage.ext.stdsage cimport PY_NEW
....: from cysignals.signals cimport sig_check
....: def foo():
....: cdef list sorted = []
....: cdef Integer apn
....: cdef Py_ssize_t i
....: for i in range(100000000):
....: apn = <Integer>PY_NEW(Integer)
....: sorted.append(apn)
....: sig_check()
....: ''')
If I cancel the function foo after a few seconds, it leaks.
Looks to me like this list isn't garbage collected at interrupt.
Btw, note that alarm might be triggered much later than expected:
sage: def test_alarm():
....: n = prod(primes_first_n(25))
....: try:
....: alarm(RDF.random_element(1e-3,0.5))
....: _ = n.divisors()
....: sleep(20)
....: except AlarmInterrupt:
....: pass
....:
sage: %time
test_alarm()
CPU times: user 127 ms, sys: 24 ms, total: 151 ms
Wall time: 150 ms
sage: %time
test_alarm()
CPU times: user 1.22 s, sys: 88.1 ms, total: 1.31 s
Wall time: 1.31 s
Steven Trogdon schrieb am Freitag, 21. August 2020 um 00:22:32 UTC+2:
> I've seen the following failures when doctesting Sage-on-Gentoo but I'm
> now seeing them when doctesting vanilla Sage:
>
> sage -t --long --warn-long 165.2 --random-seed=0 src/sage/rings/integer.pyx
> **********************************************************************
> File "src/sage/rings/integer.pyx", line 3100, in
> sage.rings.integer.Integer.divisors
> Failed example:
> for i in range(20): # long time
> try:
> alarm(RDF.random_element(1e-3, 0.5))
> _ = n.divisors()
> cancel_alarm() # we never get here
> except AlarmInterrupt:
> pass
> Exception raised:
> Traceback (most recent call last):
> File
> "/local/sage-git/sage/local/lib/python3.7/site-packages/sage/doctest/forker.py",
>
> line 715, in _run
> self.compile_and_execute(example, compiler, test.globs)
> File
> "/local/sage-git/sage/local/lib/python3.7/site-packages/sage/doctest/forker.py",
>
> line 1139, in compile_and_execute
> exec(compiled, globs)
> File "<doctest sage.rings.integer.Integer.divisors[20]>", line 4, in
> <module>
> _ = n.divisors()
> File "sage/rings/integer.pyx", line 3170, in
> sage.rings.integer.Integer.divisors
> (build/cythonized/sage/rings/integer.c:20840)
> ptr = <unsigned long*>check_allocarray(divisor_count, 3 *
> sizeof(unsigned long))
> File "memory.pxd", line 87, in cysignals.memory.check_allocarray
> (build/cythonized/sage/rings/integer.c:47465)
> MemoryError: failed to allocate 33554432 * 24 bytes
> **********************************************************************
> File "src/sage/rings/integer.pyx", line 3912, in
> sage.rings.integer.Integer.?
> Failed example:
> n.factor(proof=True)
> Exception raised:
> Traceback (most recent call last):
> File
> "/local/sage-git/sage/local/lib/python3.7/site-packages/sage/doctest/forker.py",
>
> line 715, in _run
> self.compile_and_execute(example, compiler, test.globs)
> File
> "/local/sage-git/sage/local/lib/python3.7/site-packages/sage/doctest/forker.py",
>
> line 1139, in compile_and_execute
> exec(compiled, globs)
> File "<doctest sage.rings.integer.Integer.?[9]>", line 1, in <module>
> n.factor(proof=True)
> File "sage/rings/integer.pyx", line 3994, in
> sage.rings.integer.Integer.factor
> (build/cythonized/sage/rings/integer.c:25893)
> F = factor_using_pari(n, int_=int_, debug_level=verbose,
> proof=proof)
> File "sage/rings/factorint.pyx", line 345, in
> sage.rings.factorint.factor_using_pari
> (build/cythonized/sage/rings/factorint.c:6481)
> p, e = n.__pari__().factor(proof=proof)
> File "cypari2/gen.pyx", line 4311, in cypari2.gen.Gen.factor
> cysignals.signals.AlarmInterrupt
> **********************************************************************
>
> and
>
> sage -t --long --warn-long 165.2 --random-seed=0 src/sage/doctest/test.py
> **********************************************************************
> File "src/sage/doctest/test.py", line 521, in sage.doctest.test
> Failed example:
> if system() == "Linux":
> P = subprocess.Popen(["sage", "-t", "--warn-long", "0",
> "--random-seed=0", "--memlimit=2000", "memlimit.rst"],
> stdout=subprocess.PIPE, **kwds)
> out, err = P.communicate()
> ok = ("MemoryError: failed to allocate" in bytes_to_str(out))
> Expected nothing
> Got:
> Process DocTestWorker-1:
> Traceback (most recent call last):
> File
> "/local/sage-git/sage/local/lib/python3.7/multiprocessing/process.py", line
> 297, in _bootstrap
> self.run()
> File
> "/local/sage-git/sage/local/lib/python3.7/site-packages/sage/doctest/forker.py",
>
> line 2185, in run
> task(self.options, self.outtmpfile, msgpipe, self.result_queue)
> File
> "/local/sage-git/sage/local/lib/python3.7/site-packages/sage/doctest/forker.py",
>
> line 2535, in __call__
> result_queue.put(result, False)
> File
> "/local/sage-git/sage/local/lib/python3.7/multiprocessing/queues.py", line
> 87, in put
> self._start_thread()
> File
> "/local/sage-git/sage/local/lib/python3.7/multiprocessing/queues.py", line
> 170, in _start_thread
> self._thread.start()
> File "/local/sage-git/sage/local/lib/python3.7/threading.py", line
> 847, in start
> _start_new_thread(self._bootstrap, ())
> RuntimeError: can't start new thread
>
>
> On Tuesday, August 18, 2020 at 5:01:42 PM UTC-6, Volker Braun wrote:
>
>> As always, you can get the latest beta version from the "develop" git
>> branch. Alternatively, the self-contained source tarball is at
>> http://www.sagemath.org/download-latest.html
>>
>>
>> 548666e9f2 (tag: 9.2.beta9, trac/develop) Updated SageMath version to
>> 9.2.beta9
>> 842a6866f1 Trac #29974: Make combinat doctests ready for random seeds
>> 1de1d457b4 Trac #29971: Make categories doctests ready for random seeds
>> 6864757e11 Trac #29968: Make algebras doctests ready for random seeds
>> b526019731 Trac #29963: Make geometry doctests ready for random seeds
>> 719f9af12c Trac #29509: rational_points fails for some hyperelliptic
>> curves
>> 4d5ab773b5 Trac #29257: use solve_left for division operation of matrices
>> e18e84219d Trac #30365: Disable LTO in matplotlib build
>> 01f536726d Trac #29989: fix random test failures in PSage interface
>> f531b354f7 Trac #30345: build/make/Makefile.in: Filter out "-j" from
>> sub-make invocations to avoid excessive parallel load
>> 8417e64af6 Trac #29511: Broken coercion between cyclotomic fields
>> b4a8c5745b Trac #29325: Set up permutahedron with both Vrep and Hrep (if
>> backend supports it)
>> 9b14ca3e86 Trac #29248: Index notation for tensors should allow for
>> unicode characters
>> a331d47ef3 Trac #28966: Provide unicode aliases for some globals in
>> Python 3
>> 95d0cd5b9e Trac #28951: Fixing a bug in
>> sage.schemes.cyclic_covers.charpoly_frobenius
>> 4986d5ea7f Trac #28816: database_stein_watkins Python 3 issues
>> 193e14365a Trac #30127: cygwin-minimal: pip-20.1.1 fails to install
>> a92871805f Trac #26919: Upgrade Jupyter notebook to latest (6.1.1) and
>> its dependencies to latest
>> 66472811de Trac #30251: ExtPowerFreeModule, ExtPowerDualFreeModule:
>> Simplify _repr_
>> 7030fa15a7 Trac #30175: Remove outdated spkg-src script for ecl
>> 11bb005e98 Trac #30165: normalize_coordinates broken for p-adic fields
>> 82568e3cbd Trac #30044: tox.ini: Test on voidlinux
>> 294931e00b Trac #30339: tox.ini: Update for latest ubuntu, fedora versions
>> ea615c4ce6 Trac #30331: Issue with toric_substitute for Laurent
>> polynomials
>> df3cf63875 Trac #30327: affine group element * a polytope raises KeyError
>> 9cfaefb544 Trac #30303: Graphs: two families of distance-regular graphs
>> 81a7e50cd2 Trac #30301: Italian translation of FAQ
>> 48fb9141da Trac #30286: Graph: last sporadic distance-regular graphs
>> 6f2561fdca Trac #30260: Graphs: more distance-regular graphs
>> 29098c6af9 Trac #30240: Graphs: a few distance-regular graphs
>> 1b8dff7172 Trac #30178: Manifolds: add orientability
>> 24eb3aa28d Trac #29911: sage.rings.integer, integer_ring: Remove
>> dependencies on sage.libs.ntl
>> 8b9743d0af Trac #29654: Improve face generator of polyhedra by exposing
>> `FaceIterator` class
>> c0b61fd5cf Trac #28904: Move reversed graph from backend to CGraph for
>> sparse graphs
>> 04c64492a6 Trac #30335: openblas: clear out .pc symlinks before
>> installation
>> ef6132b817 Trac #25363: Add '--simple-prompt' argument for sage
>> 3682402983 Trac #30277: Remove src/module_list.py
>> 0cc658a1f9 Trac #30257: Fusion Ring - Rmatrix
>> 6ffe4c9e55 Trac #30209: Action for Bundle Connections
>> eaa2f0a361 Trac #29950: Build sagelib from build/pkgs/sagelib/src, fix
>> `setup.py sdist`, add spkg-src and tox.ini
>> e002ee071c Trac #29539: Bug in saturation of elliptic curves over number
>> fields
>> a4b8705ae5 Trac #30330: `cdd` backend fails to initialize empty
>> polyhedron from double description
>> c3e5ce6ea1 Trac #30292: is_pyramid returns a wrong certificate
>> 3d594b5cc6 Trac #30262: Update e-antic to 0.1.8
>> 415221a9a8 (tag: 9.2.beta8) Updated SageMath version to 9.2.beta8
>>
>>
--
You received this message because you are subscribed to the Google Groups
"sage-release" 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-release/fbdfab5b-c964-4d3a-a88d-e9b9ef2cd082n%40googlegroups.com.