Opened 20 months ago
Closed 20 months ago
#28162 closed defect (duplicate)
AlarmInterrupt in divisors doctest in integer.pyx
Reported by: | gh-mwageringel | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-duplicate/invalid/wontfix |
Component: | memleak | Keywords: | |
Cc: | jdemeyer | Merged in: | |
Authors: | Reviewers: | ||
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
The following doctest for divisors()
in integer.pyx
raises an AlarmInterrupt
on some machines (using CentOS 7.6.1810).
$ ./sage -t --long src/sage/rings/integer.pyx Running doctests with ID 2019-07-10-22-17-10-03f99627. Git branch: develop Using --optional=build,dochtml,memlimit,mpir,python2,sage Doctesting 1 file. sage -t --long --warn-long 85.5 src/sage/rings/integer.pyx ********************************************************************** File "src/sage/rings/integer.pyx", line 3009, 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 "/amd/compute/mwagerin/git/sage_compute/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 681, in _run self.compile_and_execute(example, compiler, test.globs) File "/amd/compute/mwagerin/git/sage_compute/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 1105, 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 3079, in sage.rings.integer.Integer.divisors (build/cythonized/sage/rings/integer.c:19781) 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:47091) MemoryError: failed to allocate 33554432 * 24 bytes AlarmInterrupt in doctesting framework ********************************************************************** Tests run before doctest exception: sage: a = Integer(3) ; b = Integer(4) ## line 11 ## ... sage: n = -920384; n.__hash__() ## line 3586 ## ********************************************************************** Traceback (most recent call last): File "/amd/compute/mwagerin/git/sage_compute/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 2487, in __call__ doctests, extras = self._run(runner, options, results) File "/amd/compute/mwagerin/git/sage_compute/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 2536, in _run result = runner.run(test) File "/amd/compute/mwagerin/git/sage_compute/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 879, in run return self._run(test, compileflags, out) File "/amd/compute/mwagerin/git/sage_compute/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 622, in _run print("sage: " + example.source[:-1] + " ## line %s ##"%(test.lineno + example.lineno + 1)) File "src/cysignals/signals.pyx", line 320, in cysignals.signals.python_check_interrupt AlarmInterrupt ---------------------------------------------------------------------- sage -t --long --warn-long 85.5 src/sage/rings/integer.pyx # AlarmInterrupt in doctesting framework ----------------------------------------------------------------------
The second half of the output varies, as sometimes the AlarmInterrupt
is observed during one of the subsequent doctests of the file.
Change History (4)
comment:1 Changed 20 months ago by
- Cc jdemeyer added
comment:2 Changed 20 months ago by
The real cause seems to be MemoryError: failed to allocate 33554432 * 24 bytes
Is this a machine with few RAM?
comment:3 Changed 20 months ago by
- Milestone changed from sage-8.9 to sage-duplicate/invalid/wontfix
- Status changed from new to needs_review
Oh, good point. The machine has plenty of RAM, but I had not realized that this is another incarnation of #28106 where the memlimit
is hit during doctests. Raising it just a bit from 3300 to 3400 makes the test pass.
This ticket can be closed as duplicate – my bad. Thank you for the help.
comment:4 Changed 20 months ago by
- Resolution set to duplicate
- Status changed from needs_review to closed
Ticket #26002 might be related, as the same error is mentioned there. The affected doctest was added in #8573 and is meant to check for memory leaks. Is this actually a memory leak?