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.

Reply via email to