Bug#964848: sagemath: Integer objects leak memory
Uoti Urpala
uoti.urpala at pp1.inet.fi
Sat Jul 11 02:57:48 BST 2020
Package: sagemath
Version: 9.0-4+b1
Severity: normal
It seems the basic sagemath integer objects do not release memory
properly when freed. Quick way to reproduce:
while 1: x=divisors(factorial(15))
running the above line leaks memory at around 100 MB/s order of
magnitude.
A bit longer demonstration that shows the memory leak is about general
integer objects, not about the implementation of divisors() or
factorial():
i = 0
while 1:
a = []
for _ in range(1000):
a.append(i)
i += 1
This repeatedly creates 1000 integers at once, then frees them. If you drop the
number created at once below 100, it stops leaking memory. That limit of about
100 matches the pool size in
/usr/lib/python3/dist-packages/sage/rings/integer.pyx
which I believe shows the relevant Sage integer implementation. Once there are
enough freed integers that they do not fit in the pool, the code doing actual
allocation and release of new objects leaks memory. It seems to access GMP
internals, so the behavior might depend on libgmp version.
-- System Information:
Debian Release: bullseye/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 5.6.0-2-amd64 (SMP w/4 CPU threads)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=C, LC_CTYPE=en_DK.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages sagemath depends on:
ii cysignals-tools 1.10.2+ds-4
ii cython3 0.29.14-2
ii ecl 16.1.3+ds-4
ii eclib-tools 20190909-3
ii fflas-ffpack 2.4.3-1
ii flintqs 1:1.0-3+b1
ii gap-atlasrep 2.1.0-2
ii gap-dev 4.11.0-4
ii gap-online-help 4.11.0-4
ii gap-primgrp 3.4.0-1
ii gap-smallgrp 1.4.1-1
ii gap-table-of-marks 1.2.9-1
ii gap-transgrp 2.0.4-1
ii gfan 0.6.2-2
ii gmp-ecm 7.0.4+ds-5
ii ipython3 7.16.1-1
ii iso-codes 4.5.0-1
ii jmol 14.6.4+2016.11.05+dfsg1-4
ii lcalc 1.23+dfsg-11
ii less 551-2
ii libatlas3-base [libblas.so.3] 3.10.3-10
ii libblas3 [libblas.so.3] 3.9.0-2
ii libbraiding0 1.0-1+b1
ii libbrial-groebner3 1.2.8-1
ii libbrial3 1.2.8-1
ii libc6 2.30-8
ii libcdd-tools 094j-2
ii libcliquer1 1.21-2
ii libec5 20190909-3
ii libecm1 7.0.4+ds-5
ii libflint-2.5.2 2.5.2-23
ii libflint-arb2 1:2.18.1-1
ii libgap7 4.11.0-4
ii libgcc-s1 10.1.0-4
ii libgd3 2.3.0-2
ii libgivaro9 4.1.1-2
ii libglpk40 4.65-2
ii libgmp10 2:6.2.0+dfsg-6
ii libgmpxx4ldbl 2:6.2.0+dfsg-6
ii libgomp1 10.1.0-4
ii libgsl25 2.6+dfsg-2
ii libhomfly0 1.02r5-1+b1
ii libiml0 1.0.4-1+b2
ii libjs-mathjax 2.7.8+dfsg-1
ii libjs-three 111+dfsg1-1
ii liblfunction0 1.23+dfsg-11
ii liblrcalc1 1.2-2+b1
ii libm4ri-0.0.20200125 20200125-1+b1
ii libm4rie-0.0.20200125 20200125-1+b2
ii libmpc3 1.1.0-1
ii libmpfi0 1.5.3+ds-4
ii libmpfr6 4.0.2-1
ii libntl43 11.4.3-1+b1
ii libopenblas0-pthread [libblas.so.3] 0.3.10+ds-1
ii libpari-gmp-tls6 2.11.4-3
ii libplanarity0 3.0.0.5-5
ii libppl14 1:1.2-8.1
ii libpynac18py3 0.7.26-4+b1
ii libratpoints-2.1.3 1:2.1.3-1+b2
ii libreadline8 8.0-4
ii librw0 0.8+ds-1+b1
ii libsingular4m1 1:4.1.1-p2+ds-4+b1
ii libstdc++6 10.1.0-4
ii libsymmetrica2 2.0+ds-6
ii libzn-poly-0.9 0.9.1-2
ii maxima-sage 5.42.2-2+b1
ii maxima-sage-share 5.42.2-2
ii nauty 2.6r10+ds-1
ii palp 2.11-1
ii pari-galdata 0.20080411-2
ii pari-gp 2.11.4-3
ii pari-seadata 0.20090618-1
ii python-ppl-doc 0.8.4-4
ii python3 3.8.2-3
ii python3-alabaster 0.7.8-1.1
ii python3-babel 2.8.0+dfsg.1-3
ii python3-brial 1.2.8-1
ii python3-cvxopt 1.2.3+dfsg-2+b2
ii python3-cycler 0.10.0-3
ii python3-cypari2 2.1.1-2+b2
ii python3-cysignals-pari 1.10.2+ds-4+b1
ii python3-decorator 4.4.2-2
ii python3-docutils 0.16+dfsg-2
ii python3-fpylll 0.5.1+ds1-3
ii python3-future 0.18.2-2
ii python3-gmpy2 2.1.0~b4-1+b1
ii python3-imagesize 1.2.0-2
ii python3-ipython-genutils 0.2.0-3
ii python3-itsdangerous 1.1.0-2
ii python3-matplotlib 3.2.2-1
ii python3-mistune 0.8.4-3
ii python3-mpmath 1.1.0-2
ii python3-networkx 2.4-3
ii python3-nose 1.3.7-6
ii python3-numpy [python3-numpy-abi9] 1:1.19.0-1
ii python3-packaging 20.3-1.2
ii python3-path 12.0.1-2
ii python3-pexpect 4.6.0-3
ii python3-pickleshare 0.7.5-2
ii python3-pil 7.0.0-4+b1
ii python3-pip 20.1.1-2
ii python3-pkgconfig 1.5.1-3
ii python3-ppl 0.8.4-4+b1
ii python3-psutil 5.7.0-1
ii python3-ptyprocess 0.6.0-2
ii python3-pygments 2.3.1+dfsg-3
ii python3-rpy2 [python3-rpy2] 3.3.5-1
ii python3-scipy 1.4.1-2
ii python3-setuptools 46.1.3-1
ii python3-setuptools-scm 3.4.3+really3.3.3-5
ii python3-simplegeneric 0.8.1-3
ii python3-singledispatch 3.4.0.3-3
ii python3-snowballstemmer 2.0.0-1
ii python3-sphinx 2.4.3-4
ii python3-stemmer 1.3.0+dfsg-3+b1
ii python3-sympy 1.6-4
ii python3-terminado 0.8.2-3
ii python3-tornado 6.0.4-2
ii python3-traitlets 4.3.3-3
ii python3-tz 2020.1-2
ii python3-vcversioner 2.16.0.0-2
ii python3-wcwidth 0.1.9+dfsg1-2
ii python3-werkzeug 0.16.1+dfsg1-2
ii python3-zmq 18.1.1-4
ii python3-zope.interface 4.7.1-2
ii r-base-core 4.0.2-1
ii rubiks 20070912-5
ii sagemath-common 9.0-4
ii sagemath-database-conway-polynomials 0.5-7
ii sagemath-database-elliptic-curves 0.8.1-4
ii sagemath-database-graphs 20161026+dfsg-4
ii sagemath-database-mutually-combinatorial-designs 20140630-5
ii sagemath-database-polytopes 20170220-4
ii singular 1:4.1.1-p2+ds-4+b1
ii sqlite3 3.32.3-1
ii sympow 2.023.6-1
ii tachyon 0.99~b6+dsx-9
ii xcas 1.5.0.87+dfsg1-7
Versions of packages sagemath recommends:
ii maxima-sage-doc 5.42.2-2
ii pari-doc 2.11.4-3
ii python3-sagenb-export 3.2-4
ii r-cran-lattice 0.20-41-1+b1
ii sagemath-doc 9.0-4
ii sagemath-jupyter 9.0-4
ii sagetex 3.4+ds-2
ii singular-doc 1:4.1.1-p2+ds-4
ii texlive-latex-base 2020.20200629-1
Versions of packages sagemath suggests:
pn dot2tex <none>
pn gap-design <none>
ii gap-factint 1.6.3+ds-1
pn gap-grape <none>
pn gap-guava <none>
pn gap-laguna <none>
pn gap-sonata <none>
pn gap-toric <none>
-- no debconf information
More information about the debian-science-maintainers
mailing list