icc compiler jobs failing with memory issues
The icc
compiler test job is failing on the new Bullseye image with some sort of memory leak issue [log]:
============================= test session starts ==============================
platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 -- /usr/bin/python3
cachedir: .pytest_cache
hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/builds/lscsoft/lalsuite/lalsuite-7.11.1/_build/sub/lal/swig/.hypothesis/examples')
rootdir: /builds/lscsoft/lalsuite/lalsuite-7.11.1
plugins: hypothesis-5.43.3, arraydiff-0.3, astropy-header-0.1.2, cov-2.10.1, doctestplus-0.9.0, filter-subpackage-0.1.1, openfiles-0.5.0, remotedata-0.3.2
collecting ... collected 19 items
../../../../lal/swig/SWIGTestLALPython.py::test_memory_allocation SKIPPED [ 5%]
../../../../lal/swig/SWIGTestLALPython.py::test_object_parent_tracking PASSED [ 10%]
../../../../lal/swig/SWIGTestLALPython.py::test_equal_return_first_argument_type_handling PASSED [ 15%]
../../../../lal/swig/SWIGTestLALPython.py::test_string_conversions PASSED [ 21%]
../../../../lal/swig/SWIGTestLALPython.py::test_static_vector_matrix_conversions PASSED [ 26%]
../../../../lal/swig/SWIGTestLALPython.py::test_dynamic_vector_matrix_conversions PASSED [ 31%]
../../../../lal/swig/SWIGTestLALPython.py::test_fixed_and_dynamic_arrays_typemaps PASSED [ 36%]
../../../../lal/swig/SWIGTestLALPython.py::test_input_views_of_string_array_structs PASSED [ 42%]
../../../../lal/swig/SWIGTestLALPython.py::test_input_views_of_numeric_array_structs PASSED [ 47%]
../../../../lal/swig/SWIGTestLALPython.py::test_FFT_functions_with_input_views FAILED [ 52%]
../../../../lal/swig/SWIGTestLALPython.py::test_dynamic_array_of_pointers_access FAILED [ 57%]
../../../../lal/swig/SWIGTestLALPython.py::test_typemaps_for_strings_and_double_pointers FAILED [ 63%]
../../../../lal/swig/SWIGTestLALPython.py::test_tm_struct_conversions FAILED [ 68%]
../../../../lal/swig/SWIGTestLALPython.py::test_LIGOTimeGPS_operations FAILED [ 73%]
../../../../lal/swig/SWIGTestLALPython.py::test_LALUnit_operations FAILED [ 78%]
../../../../lal/swig/SWIGTestLALPython.py::test_Python_non_dynamic_structs FAILED [ 84%]
../../../../lal/swig/SWIGTestLALPython.py::test_Python_pickling PASSED [ 89%]
../../../../lal/swig/SWIGTestLALPython.py::test_Python_dict_to_LALDict_typemap PASSED [ 94%]
../../../../lal/swig/SWIGTestLALPython.py::test_Python_conversion_of_NumPy_fixed_width_integer_float_types PASSED [100%]
=================================== FAILURES ===================================
_____________________ test_FFT_functions_with_input_views ______________________
def test_FFT_functions_with_input_views():
"""check FFT functions with input views
"""
print("check FFT functions with input views ...", file=sys.stderr)
r4in = numpy.array(list(range(0, 32)), dtype=numpy.float32)
r8in = numpy.array(list(range(0, 64)), dtype=numpy.float64)
c8in = numpy.array(numpy.vectorize(complex)(8 + r4in, r4in), dtype=numpy.complex64)
c16in = numpy.array(numpy.vectorize(complex)(16 + r8in, r8in), dtype=numpy.complex128)
c8inv = lal.CreateCOMPLEX8Vector(len(c8in))
c8inv.data = c8in
c8outv = lal.CreateCOMPLEX8Vector(len(c8in))
plan = lal.CreateForwardCOMPLEX8FFTPlan(len(c8in), 0)
lal.COMPLEX8VectorFFT(c8outv, c8inv, plan)
c8out = numpy.zeros(numpy.shape(c8outv.data), dtype=c8outv.data.dtype)
lal.COMPLEX8VectorFFT(c8out, c8in, plan)
assert (c8out == c8outv.data).all()
del c8inv
del c8outv
del plan
locals() # update locals() to remove lingering references
lal.CheckMemoryLeaks()
c16inv = lal.CreateCOMPLEX16Vector(len(c16in))
c16inv.data = c16in
c16outv = lal.CreateCOMPLEX16Vector(len(c16in))
plan = lal.CreateForwardCOMPLEX16FFTPlan(len(c16in), 0)
lal.COMPLEX16VectorFFT(c16outv, c16inv, plan)
c16out = numpy.zeros(numpy.shape(c16outv.data), dtype=c16outv.data.dtype)
lal.COMPLEX16VectorFFT(c16out, c16in, plan)
assert (c16out == c16outv.data).all()
del c16inv
del c16outv
del plan
locals() # update locals() to remove lingering references
lal.CheckMemoryLeaks()
r4inv = lal.CreateREAL4Vector(len(r4in))
r4inv.data = r4in
c8outv = lal.CreateCOMPLEX8Vector(len(r4in)//2 + 1)
plan = lal.CreateForwardREAL4FFTPlan(len(r4in), 0)
lal.REAL4ForwardFFT(c8outv, r4inv, plan)
c8out = numpy.zeros(numpy.shape(c8outv.data), dtype=c8outv.data.dtype)
lal.REAL4ForwardFFT(c8out, r4in, plan)
assert (c8out == c8outv.data).all()
del r4inv
del c8outv
del plan
locals() # update locals() to remove lingering references
> lal.CheckMemoryLeaks()
E RuntimeError: Generic failure
../../../../lal/swig/SWIGTestLALPython.py:1034: RuntimeError
----------------------------- Captured stderr call -----------------------------
check FFT functions with input views ...
LALFree error: array bounds overwritten
Byte 1 past end of array has changed
Corrupted address: 0x24638c0
Array address: 0x2463840
Location: ../../../../../lal/lib/fft/IntelRealFFT_source.c:113
LALRaise: Segmentation fault
LALCheckMemoryLeaks: 0 allocs, 128 bytes
LALCheckMemoryLeaks: memory leak
LALRaise: Segmentation fault
____________________ test_dynamic_array_of_pointers_access _____________________
def test_dynamic_array_of_pointers_access():
"""check dynamic array of pointers access
"""
print("checking dynamic array of pointers access ...", file=sys.stderr)
ap = lal.swig_lal_test_Create_arrayofptrs(3)
assert ap.length == 3
for i in range(0, ap.length):
assert ap.data[i].length == 6
for j in range(0, ap.data[i].length):
assert ap.data[i].data[j] == 42*ap.length*i + j
del ap
locals() # update locals() to remove lingering references
> lal.CheckMemoryLeaks()
E RuntimeError: Generic failure
../../../../lal/swig/SWIGTestLALPython.py:1141: RuntimeError
----------------------------- Captured stderr call -----------------------------
checking dynamic array of pointers access ...
LALCheckMemoryLeaks: 0 allocs, 128 bytes
LALCheckMemoryLeaks: memory leak
LALRaise: Segmentation fault
________________ test_typemaps_for_strings_and_double_pointers _________________
def test_typemaps_for_strings_and_double_pointers():
"""check typemaps for strings and double pointers
"""
print("checking typemaps for strings and double pointers ...", file=sys.stderr)
sts = lal.swig_lal_test_struct()
ptr_ptr, ptr_null_ptr, null_ptr_ptr = lal.swig_lal_test_typemaps_string_ptrptr("abcde", "", None, sts, 0, None)
assert ptr_ptr == sts
assert ptr_null_ptr is not None
assert null_ptr_ptr is None
del sts
del ptr_ptr
del ptr_null_ptr
del null_ptr_ptr
locals() # update locals() to remove lingering references
> lal.CheckMemoryLeaks()
E RuntimeError: Generic failure
../../../../lal/swig/SWIGTestLALPython.py:1159: RuntimeError
----------------------------- Captured stderr call -----------------------------
checking typemaps for strings and double pointers ...
LALCheckMemoryLeaks: 0 allocs, 128 bytes
LALCheckMemoryLeaks: memory leak
LALRaise: Segmentation fault
__________________________ test_tm_struct_conversions __________________________
def test_tm_struct_conversions():
"""check 'tm' struct conversions
"""
print("checking 'tm' struct conversions ...", file=sys.stderr)
gps0 = 989168284
utc0 = [2011, 5, 11, 16, 57, 49, 2, 131, 0]
assert lal.GPSToUTC(gps0) == tuple(utc0)
assert lal.UTCToGPS(utc0) == gps0
for i in range(0, 10):
gps = gps0 + i * 86400
utc = list(utc0)
utc[2] = utc[2] + i
utc[6] = (utc[6] + i) % 7
utc[7] = utc[7] + i
utc[8] = -1 + (i % 3)
assert lal.GPSToUTC(gps)[0:8] == tuple(utc[0:8])
assert lal.UTCToGPS(utc) == gps
utc = lal.GPSToUTC(lal.UTCToGPS(utc))
dt = datetime.datetime(*utc[0:6])
assert utc[6] == dt.weekday()
locals() # update locals() to remove lingering references
> lal.CheckMemoryLeaks()
E RuntimeError: Generic failure
../../../../lal/swig/SWIGTestLALPython.py:1204: RuntimeError
----------------------------- Captured stderr call -----------------------------
checking 'tm' struct conversions ...
LALCheckMemoryLeaks: 0 allocs, 128 bytes
LALCheckMemoryLeaks: memory leak
LALRaise: Segmentation fault
_________________________ test_LIGOTimeGPS_operations __________________________
def test_LIGOTimeGPS_operations():
"""check LIGOTimeGPS operations
"""
print("checking LIGOTimeGPS operations ...", file=sys.stderr)
from lal import LIGOTimeGPS
t0 = LIGOTimeGPS()
assert type(LIGOTimeGPS(t0)) is LIGOTimeGPS
assert is_value_and_type(t0, 0, LIGOTimeGPS)
assert t0 != None and not t0 is None
t1 = LIGOTimeGPS(10.5)
t2 = LIGOTimeGPS(10, 500000000)
assert not t0 and t1 and t2
assert is_value_and_type(t1, t2, LIGOTimeGPS)
t3 = +t1
t3 = -t2
assert t1 == t2 and t1 >= t2 and t2 >= t1
assert abs(-t1) == t1
assert float(t1) == 10.5
assert is_value_and_type(t1 + 3.5, 14, LIGOTimeGPS)
assert is_value_and_type(3.5 + t1, 14, LIGOTimeGPS)
t2 -= 5.5
assert is_value_and_type(t2, 5, LIGOTimeGPS)
assert t2 + 5.5 >= t1 and t2 + 3 != t2
assert is_value_and_type(t2 - 5, t0, LIGOTimeGPS)
assert is_value_and_type(t1 * 3, 31.5, LIGOTimeGPS)
assert is_value_and_type(3 * t1, 31.5, LIGOTimeGPS)
assert is_value_and_type(t2 / 2.5, 2, LIGOTimeGPS)
assert is_value_and_type(21 / t1, 2, LIGOTimeGPS)
assert is_value_and_type(t1 + t2, 15.5, LIGOTimeGPS)
assert is_value_and_type(t1 - t2, 5.5, LIGOTimeGPS)
assert is_value_and_type(t1 * t2, 52.5, LIGOTimeGPS)
assert is_value_and_type(t2 * t1, 52.5, LIGOTimeGPS)
assert is_value_and_type(t1 / t2, 2.1, LIGOTimeGPS)
assert is_value_and_type(t1 % t2, 0.5, LIGOTimeGPS)
assert t1 > t2 and t2 < t1 and t1 >= t2 and t2 <= t1
assert LIGOTimeGPS(333333333,333333333) == LIGOTimeGPS(1000000000) / 3
assert LIGOTimeGPS(666666666,666666667) == LIGOTimeGPS(2000000000) / 3
assert LIGOTimeGPS("-62997760.825036067") == LIGOTimeGPS("-47044285.062262587") - LIGOTimeGPS("15953475.76277348")
assert LIGOTimeGPS("-6542354.389038577") == LIGOTimeGPS("-914984.929117316") * 7.1502318572066237
assert LIGOTimeGPS("-6542354.389038577") == 7.1502318572066237 * LIGOTimeGPS("-914984.929117316")
assert LIGOTimeGPS("-127965.770535834") == LIGOTimeGPS("-914984.929117316") / 7.1502318572066237
t1 += 812345667.75
assert str(t1) == "812345678.25"
assert type(eval(repr(t1))) is type(t1)
assert eval(repr(t1)) == t1
assert(LIGOTimeGPS(1100000000).asutcstr() == "Fri, 14 Nov 2014 11:33:04 +0000") # lalapps_tconvert -u -R
assert LIGOTimeGPS(1100000000, 100).asutcstr() == "Fri, 14 Nov 2014 11:33:04.0000001 +0000"
assert LIGOTimeGPS(0, 0).asutcstr() == "Sun, 06 Jan 1980 00:00:00 +0000"
assert LIGOTimeGPS(-1, 0).asutcstr() == "Sat, 05 Jan 1980 23:59:59 +0000"
assert LIGOTimeGPS(0, -1).asutcstr() == "Sat, 05 Jan 1980 23:59:59.999999999 +0000"
assert int(t1) == 812345678
assert t1.ns() == 812345678250000000
assert hash(t1) == 1049484238
t4struct = lal.swig_lal_test_gps()
t4struct.t = 1234.5
assert t4struct.t == 1234.5
t5 = LIGOTimeGPS("1000")
assert t5 == 1000
print("*** below should be error messages from LIGOTimeGPS constructor ***", file=sys.stderr)
set_nice_error_handlers()
expected_exception = False
try:
t5 = LIGOTimeGPS("abc1000")
expected_exception = True
except:
pass
set_default_error_handlers()
assert not expected_exception
set_nice_error_handlers()
expected_exception = False
try:
t5 = LIGOTimeGPS("1000abc")
expected_exception = True
except:
pass
set_default_error_handlers()
assert not expected_exception
print("*** above should be error messages from LIGOTimeGPS constructor ***", file=sys.stderr)
assert lal.swig_lal_test_noptrgps(LIGOTimeGPS(1234.5)) == lal.swig_lal_test_noptrgps(1234.5)
print("*** below should be error messages from LIGOTimeGPS constructor ***", file=sys.stderr)
set_nice_error_handlers()
expected_exception = False
try:
LIGOTimeGPS(None)
expected_exception = True
except:
pass
set_default_error_handlers()
assert not expected_exception
print("*** above should be error messages from LIGOTimeGPS constructor ***", file=sys.stderr)
del t0
del t1
del t2
del t3
del t4struct
del t5
locals() # update locals() to remove lingering references
> lal.CheckMemoryLeaks()
E RuntimeError: Generic failure
../../../../lal/swig/SWIGTestLALPython.py:1305: RuntimeError
----------------------------- Captured stderr call -----------------------------
checking LIGOTimeGPS operations ...
*** below should be error messages from LIGOTimeGPS constructor ***
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
XLAL Error - new_tagLIGOTimeGPS__SWIG_3 (swiglal_lal_python.c:11055): 'abc1000' is not a valid LIGOTimeGPS
XLAL Error - new_tagLIGOTimeGPS__SWIG_3 (swiglal_lal_python.c:11055): Invalid argument
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
XLAL Error - new_tagLIGOTimeGPS__SWIG_3 (swiglal_lal_python.c:11055): '1000abc' is not a valid LIGOTimeGPS
XLAL Error - new_tagLIGOTimeGPS__SWIG_3 (swiglal_lal_python.c:11055): Invalid argument
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
*** above should be error messages from LIGOTimeGPS constructor ***
*** below should be error messages from LIGOTimeGPS constructor ***
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
XLAL Error - new_tagLIGOTimeGPS__SWIG_3 (swiglal_lal_python.c:11050): Check failed: str != ((void*)0)
XLAL Error - new_tagLIGOTimeGPS__SWIG_3 (swiglal_lal_python.c:11050): Invalid pointer
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
*** above should be error messages from LIGOTimeGPS constructor ***
LALCheckMemoryLeaks: 0 allocs, 128 bytes
LALCheckMemoryLeaks: memory leak
LALRaise: Segmentation fault
___________________________ test_LALUnit_operations ____________________________
def test_LALUnit_operations():
"""check LALUnit operations
"""
print("checking LALUnit operations ...", file=sys.stderr)
u1 = lal.Unit("kg m s^-2")
assert type(lal.Unit(u1)) is lal.Unit
assert is_value_and_type(u1, lal.NewtonUnit, lal.Unit)
assert str(u1) == "m kg s^-2"
u2 = lal.MeterUnit * lal.KiloGramUnit / lal.SecondUnit ** 2
assert is_value_and_type(u2, u1, lal.Unit)
u2 = lal.MeterUnit**(1,2) * lal.KiloGramUnit**(1,2) * lal.SecondUnit ** -1
assert is_value_and_type(u2, u1**(1,2), lal.Unit)
set_nice_error_handlers()
expected_exception = False
try:
lal.SecondUnit ** (1,0)
expected_exception = True
except:
pass
set_default_error_handlers()
assert not expected_exception
u1 *= lal.MeterUnit
assert is_value_and_type(u1, lal.JouleUnit, lal.Unit)
assert repr(u1) == "m^2 kg s^-2"
u1 /= lal.SecondUnit
assert is_value_and_type(u1, lal.WattUnit, lal.Unit)
assert u1 == "m^2 kg s^-3"
u1 *= 1000
assert u1 == lal.KiloUnit * lal.WattUnit
assert u1 == 1000 * lal.WattUnit
assert u1 == lal.WattUnit * 1000
assert u1 == lal.MegaUnit / 1000 * lal.WattUnit
assert int(u1) == 1000
u1 /= 10000
assert u1 == 100 * lal.MilliUnit * lal.WattUnit
set_nice_error_handlers()
expected_exception = False
try:
u1 *= 1.234
expected_exception = True
except:
pass
set_default_error_handlers()
assert not expected_exception
assert u1.norm() == u1
del u1
del u2
locals() # update locals() to remove lingering references
> lal.CheckMemoryLeaks()
E RuntimeError: Generic failure
../../../../lal/swig/SWIGTestLALPython.py:1380: RuntimeError
----------------------------- Captured stderr call -----------------------------
checking LALUnit operations ...
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
LALCheckMemoryLeaks: 0 allocs, 128 bytes
LALCheckMemoryLeaks: memory leak
LALRaise: Segmentation fault
_______________________ test_Python_non_dynamic_structs ________________________
def test_Python_non_dynamic_structs():
"""check Python non-dynamic structs
"""
print("checking Python non-dynamic structs", file=sys.stderr)
sts = lal.swig_lal_test_struct()
sts.n = 1
sts.Alpha = 1.234
set_nice_error_handlers()
expected_exception = False
try:
sts.N = 1
sts.alpha = 1.234
sts.zzzzz = "does not exist"
expected_exception = True
except:
pass
set_default_error_handlers()
assert not expected_exception
del sts
t = lal.LIGOTimeGPS(1234)
t.event = "this happened"
del t
locals() # update locals() to remove lingering references
> lal.CheckMemoryLeaks()
E RuntimeError: Generic failure
../../../../lal/swig/SWIGTestLALPython.py:1407: RuntimeError
----------------------------- Captured stderr call -----------------------------
checking Python non-dynamic structs
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
*** WARNING: XLAL/LAL/GSL functions will now raise XLAL errors ***
LALCheckMemoryLeaks: 0 allocs, 128 bytes
LALCheckMemoryLeaks: memory leak
LALRaise: Segmentation fault
=============================== warnings summary ===============================
/usr/lib/python3/dist-packages/_pytest/junitxml.py:446
/usr/lib/python3/dist-packages/_pytest/junitxml.py:446: PytestDeprecationWarning: The 'junit_family' default value will change to 'xunit2' in pytest 6.0. See:
https://docs.pytest.org/en/stable/deprecations.html#junit-family-default-value-change-to-xunit2
for more information.
_issue_warning_captured(deprecated.JUNIT_XML_DEFAULT_FAMILY, config.hook, 2)
-- Docs: https://docs.pytest.org/en/stable/warnings.html
- generated xml file: /builds/lscsoft/lalsuite/lalsuite-7.11.1/_build/sub/lal/swig/junit-SWIGTestLALPython.xml -
=========================== short test summary info ============================
SKIPPED [1] ../../../../lal/swig/SWIGTestLALPython.py:44: LAL was built with MEMORY_FUNCTIONS_DISABLED
============== 7 failed, 11 passed, 1 skipped, 1 warning in 1.34s ==============
FAIL SWIGTestLALPython.py (exit status: 1)
I have no idea how to debug this, cc @adam-mercer @karl-wette @jolien-creighton.