Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to xarray 2023.1.0 #303

Merged
merged 27 commits into from
Dec 10, 2024
Merged

Update to xarray 2023.1.0 #303

merged 27 commits into from
Dec 10, 2024

Conversation

bendudson
Copy link
Contributor

@bendudson bendudson commented Oct 29, 2024

Builds on @johnomotani 's #276

I think this also replaces @mikekryjak 's #289 : Any variables, including wtime variables, that are defined on multiple processors are just taken from processor 0.

Changing options passed to xarray.open_mfdataset significantly speeds up opening datasets.

Example 6x faster (3 seconds vs 18):

import xbout
%time bd = xbout.open_boutdataset('./BOUT.dmp.*.nc', inputfilepath='./BOUT.inp')
%memit bd = xbout.open_boutdataset('./BOUT.dmp.*.nc', inputfilepath='./BOUT.inp')

Previously:

CPU times: user 18.7 s, sys: 1.63 s, total: 20.3 s
Wall time: 17.8 s
peak memory: 355.83 MiB, increment: 66.59 MiB

Now:

CPU times: user 2.86 s, sys: 234 ms, total: 3.09 s
Wall time: 3.08 s
peak memory: 322.73 MiB, increment: 51.43 MiB

Upgrades to the most recent version of xarray that still supports python 3.8. note 3.8 is end of life as of Oct 7, 2024.

johnomotani and others added 8 commits January 20, 2023 11:36
xarray behaviour changed, see pydata/xarray#6999
and links from there.
Updates to xarray, meant that 'index' values were not updated when
'coordinate' values were updated. Fix by explicitly updating indexes.
This is the last release that supports python 3.9
Accessing e.g. `ds.dims['x']` produces:

```
FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
```

This commit changes `dims` to `sizes`.
Xarray's open_mfdataset is very slow for BOUT++ datasets. Other datasets
also have issues (see e.g. pydata/xarray#1385)
though the cause may not be the same.

Using an implementation that opens the datasets and concatenates
significantly speeds up this process.
Using the same concatenation options as in custom implementation.
Has essentially the same performance, much faster than original.
Unused import (numpy.unique)
Duplicated keyword
black formatting
@pep8speaks
Copy link

pep8speaks commented Oct 29, 2024

Hello @bendudson! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

There are currently no PEP 8 issues detected in this Pull Request. Cheers! 🍻

Comment last updated at 2024-11-07 09:45:27 UTC

Mainly lines too long.
_BOUT_PER_PROC_VARIABLES are no longer used in xbout,
since duplicated variables are just taken from the first processor.
@bendudson bendudson changed the title Update to xarray 2024-7-0 Update to xarray 2024.7.0 Oct 29, 2024
bendudson and others added 7 commits October 29, 2024 16:19
Timing info is now taken from the first processor,
rather than dropped.
By eye there are three subplots as required, but there are also some
spurious axes. Unclear to me how to fix, so skipping for now.
xarray 2024.07.0 requires python >= 3.9
@bendudson
Copy link
Contributor Author

Tests pass locally, all failing on github actions. Investigating...

bendudson and others added 3 commits October 29, 2024 21:29
Reduce minimum xarray to 2023.1.0

Python 3.8 is EoL, but only just: Oct 7, 2024.
`_trim` no longer removes `wtime` timing info.
@bendudson bendudson changed the title Update to xarray 2024.7.0 Update to xarray 2023.1.0 Oct 30, 2024
bendudson and others added 5 commits October 29, 2024 21:41
Previously were scalar `xarray.DataArray`, which caused `linspace` to
fail due to missing dimensions
Currently, 3.13 is hanging when running these tests
@ZedThree
Copy link
Member

Last commit didn't rerun tests for some reason. 3.12 is failing with a segfault (!!):

xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls1] PASSED [  6%]
Fatal Python error: Segmentation fault

Thread 0x00007f04c6d03640 (most recent call first):
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/locks.py", line 64 in __enter__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/locks.py", line 231 in __enter__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 115 in _getitem
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 1018 in explicit_indexing_adapter
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 104 in __getitem__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 657 in get_duck_array
  File Fatal Python error: "Aborted/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py

", line 794 in get_duck_array
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 583 in get_duck_array
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 578 in __array__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/array/core.py", line 120 in getter
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/core.py", line 133 in _execute_task
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/local.py", line 226 in execute_task
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/local.py", line 240 in batch_execute_tasks
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/concurrent/futures/thread.py", line 58 in run
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/concurrent/futures/thread.py", line 92 in _worker
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1012 in run
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1075 in _bootstrap_inner
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1032 in _bootstrap

Thread 0x00007f04c7d04640 (most recent call first):
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/concurrent/futures/thread.py", line 89 in _worker
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1012 in run
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1075 in _bootstrap_inner
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1032 in _bootstrap

Thread 0x00007f04c8d05640 (most recent call first):
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 117 in _getitem
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 1018 in explicit_indexing_adapter
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 104 in __getitem__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 657 in get_duck_array
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 794 in get_duck_array
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 583 in get_duck_array
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 578 in __array__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/array/core.py", line 120 in getter
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/core.py", line 133 in _execute_task
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/local.py", line 226 in execute_task
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/local.py", line 240 in batch_execute_tasks
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/concurrent/futures/thread.py", line 58 in run
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/concurrent/futures/thread.py", line 92 in _worker
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1012 in run
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1075 in _bootstrap_inner
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1032 in _bootstrap

Thread 0x00007f04c9d06640 (most recent call first):
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/concurrent/futures/thread.py", line 89 in _worker
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1012 in run
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1075 in _bootstrap_inner
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 1032 in _bootstrap

Current thread 0x00007f04f4509b80 (most recent call first):
  Garbage-collecting
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/file_manager.py", line 234 in close
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/file_manager.py", line 250 in __del__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 299 in __enter__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/threading.py", line 496 in acquire
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/concurrent/futures/thread.py", line 185 in _adjust_thread_count
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/concurrent/futures/thread.py", line 179 in submit
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/local.py"
Extension modules: , line numpy._core._multiarray_umath496 in fire_tasks
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/local.py", line 501 in get_async
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/threaded.py", line 91 in get
,   File numpy.linalg._umath_linalg"/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/base.py", line 660 in compute
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/base.py", line 3[72](https://github.com/boutproject/xBOUT/actions/runs/11591085041/job/32270069559#step:6:73) in compute, 
cftime._cftime  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/array/core.py", line 1697 in __array__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/variable.py, "netCDF4._netCDF4, line 352 in _as_array_or_item
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/variable.py", line 554 in values
,   File numpy.random._common"/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/dataarray.py", line 811 in values
  File "/home/runner/work/xBOUT/xBOUT/xbout/plotting/animate.py", numpy.random.bit_generator, line 618 in animate_line
  File "/home/runner/work/xBOUT/xBOUT/xbout/boutdataset.py", numpy.random._bounded_integers, line 1230 in animate_list
  File "/home/runner/work/xBOUT/xBOUT/xbout/tests/test_animate.py", numpy.random._mt19937, line 4[73](https://github.com/boutproject/xBOUT/actions/runs/11591085041/job/32270069559#step:6:74) in test_animate_list_controls_arg
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/python.py", numpy.random.mtrand, line 159 in pytest_pyfunc_call
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_callers.py", , line numpy.random._philox103 in _multicall
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_manager.py", line 120,  in numpy.random._pcg64_hookexec
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_hooks.py", line 513 in __call__, 
numpy.random._sfc64  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/python.py", line 1627 in runtest
  File , "numpy.random._generator/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/runner.py", line 1[74](https://github.com/boutproject/xBOUT/actions/runs/11591085041/job/32270069559#step:6:75) in pytest_runtest_call
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_callers.py", pandas._libs.tslibs.ccalendar, line 103 in _multicall
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_manager.py", line 120 in _hookexec
,   File pandas._libs.tslibs.np_datetime"/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_hooks.py", line 513 in __call__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/runner.py", , line pandas._libs.tslibs.dtypes242 in <lambda>
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/runner.py", line 341 in , from_callpandas._libs.tslibs.base
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/runner.py", line 241 in call_and_report
,   File pandas._libs.tslibs.nattype"/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/runner.py", line 132 in runtestprotocol
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/runner.py", line 113 in pytest_runtest_protocol
  File ", /opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_callers.pypandas._libs.tslibs.timezones", line 103 in _multicall
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_manager.py", line , 120pandas._libs.tslibs.fields in _hookexec
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_hooks.py", line 513 in , __call__pandas._libs.tslibs.timedeltas
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/main.py", line 362 in pytest_runtestloop
  File , "pandas._libs.tslibs.tzconversion/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_callers.py", line 103 in _multicall
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_manager.py, "pandas._libs.tslibs.timestamps, line 120 in _hookexec
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_hooks.py", line , 513pandas._libs.properties in __call__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/main.py", line 337 in _main, 
pandas._libs.tslibs.offsets  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/main.py", line 283 in wrap_session
  File , "pandas._libs.tslibs.strptime/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/main.py", line 330 in pytest_cmdline_main
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_callers.py, "pandas._libs.tslibs.parsing, line 103 in _multicall
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File , "pandas._libs.tslibs.conversion/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/pluggy/_hooks.py", line 513 in __call__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/config/__init__.py, "pandas._libs.tslibs.period, line 1[75](https://github.com/boutproject/xBOUT/actions/runs/11591085041/job/32270069559#step:6:76) in main
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/config/__init__.py", line 201 in console_main, 
pandas._libs.tslibs.vectorized  File "/opt/hostedtoolcache/Python/3.12.7/x64/bin/pytest", line 8 in <module>

@bendudson
Copy link
Contributor Author

Thanks @ZedThree ! The segfault is strange. Something in NetCDF? Possibly related to file locking? I was also geting segfaults (on python 3.9) when passing parallel=True to xarray.open_mfdataset.

@ZedThree
Copy link
Member

I've not checked which test it is exactly, but 3.13 hangs on test_save (see #304)

@bendudson
Copy link
Contributor Author

Tests seem to run about a factor of 2 slower than previously (e.g. https://github.com/boutproject/xBOUT/actions/runs/6983119192/usage about 30 mins). I think it's still worth merging so we can gradually address the performance issues.

@dschwoerer
Copy link
Contributor

Here is a log from valgrind and python 3.13:
builder-live.log.gz

In this case it did not crash and did run for 2 hours ...

The first error is from netCDF:

==571==    at 0x498BB2B: PyLong_FromUnsignedLong (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3E04: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)

Also in matplotlib and numpy there are errors, but most are from netCDF. It might well be that netCDF does not initialise memory and numpy and matplotlib later use that memory.

==571== 632 errors in context 1 of 19:
==571== Use of uninitialised value of size 8
==571==    at 0x1E2E3E31: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 808 errors in context 2 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x890D6C4: ??? (in /usr/lib64/python3.13/site-packages/numpy/core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x8963B32: ??? (in /usr/lib64/python3.13/site-packages/numpy/core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49AF86E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x88F44CD: ??? (in /usr/lib64/python3.13/site-packages/numpy/core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49D8374: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49AEC7C: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2ED9E: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B0A13: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 920 errors in context 3 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x890D6BB: ??? (in /usr/lib64/python3.13/site-packages/numpy/core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x8963B32: ??? (in /usr/lib64/python3.13/site-packages/numpy/core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49AF86E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x88F44CD: ??? (in /usr/lib64/python3.13/site-packages/numpy/core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49D8374: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49AEC7C: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2ED9E: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B0A13: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 3101 errors in context 4 of 19:
==571== Use of uninitialised value of size 8
==571==    at 0x506FC39: ??? (in /usr/lib64/libm.so.6)
==571==    by 0x2BAB32B4: ??? (in /usr/lib64/python3.13/site-packages/matplotlib/backends/_backend_agg.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49A20C3: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A0829C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A084B1: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49E221B: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4998585: _PyObject_MakeTpCall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B81FF: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 3101 errors in context 5 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x506FD8C: ??? (in /usr/lib64/libm.so.6)
==571==    by 0x2BAB32B4: ??? (in /usr/lib64/python3.13/site-packages/matplotlib/backends/_backend_agg.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49A20C3: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A0829C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A084B1: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49E221B: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4998585: _PyObject_MakeTpCall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B81FF: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 3101 errors in context 6 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x506FD7D: ??? (in /usr/lib64/libm.so.6)
==571==    by 0x2BAB32B4: ??? (in /usr/lib64/python3.13/site-packages/matplotlib/backends/_backend_agg.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49A20C3: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A0829C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A084B1: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49E221B: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4998585: _PyObject_MakeTpCall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B81FF: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 3101 errors in context 7 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x506FD6E: ??? (in /usr/lib64/libm.so.6)
==571==    by 0x2BAB32B4: ??? (in /usr/lib64/python3.13/site-packages/matplotlib/backends/_backend_agg.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49A20C3: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A0829C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A084B1: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49E221B: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4998585: _PyObject_MakeTpCall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B81FF: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 3101 errors in context 8 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x506FBC9: ??? (in /usr/lib64/libm.so.6)
==571==    by 0x2BAB32B4: ??? (in /usr/lib64/python3.13/site-packages/matplotlib/backends/_backend_agg.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49A20C3: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A0829C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A084B1: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49E221B: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4998585: _PyObject_MakeTpCall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B81FF: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 3101 errors in context 9 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x506FBBA: ??? (in /usr/lib64/libm.so.6)
==571==    by 0x2BAB32B4: ??? (in /usr/lib64/python3.13/site-packages/matplotlib/backends/_backend_agg.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49A20C3: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A0829C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A084B1: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49E221B: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4998585: _PyObject_MakeTpCall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B81FF: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 3101 errors in context 10 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x504381C: log (in /usr/lib64/libm.so.6)
==571==    by 0x2BAB32B4: ??? (in /usr/lib64/python3.13/site-packages/matplotlib/backends/_backend_agg.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x49A20C3: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A0829C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A084B1: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49E221B: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4998585: _PyObject_MakeTpCall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B81FF: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 10709 errors in context 11 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x49EA691: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49830B8: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3F96: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 10709 errors in context 12 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x498BB97: PyLong_FromUnsignedLong (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3E04: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 10709 errors in context 13 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x498BBEF: _PyLong_New (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x498BB76: PyLong_FromUnsignedLong (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3E04: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 21337 errors in context 14 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x49EA6B3: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49830B8: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3F96: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 26060 errors in context 15 of 19:
==571== Use of uninitialised value of size 8
==571==    at 0x499136D: PyList_Append (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3F32: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 26692 errors in context 16 of 19:
==571== Use of uninitialised value of size 8
==571==    at 0x498308F: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3F96: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 26692 errors in context 17 of 19:
==571== Use of uninitialised value of size 8
==571==    at 0x1E2E3E4A: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 32046 errors in context 18 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x498BB5F: PyLong_FromUnsignedLong (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3E04: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== 
==571== 58738 errors in context 19 of 19:
==571== Conditional jump or move depends on uninitialised value(s)
==571==    at 0x498BB2B: PyLong_FromUnsignedLong (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x1E2E3E04: ??? (in /usr/lib64/python3.13/site-packages/netCDF4/_netCDF4.cpython-313-x86_64-linux-gnu.so)
==571==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==571==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==571== 
==571== ERROR SUMMARY: 247759 errors from 19 contexts (suppressed: 0 from 0)

@ZedThree
Copy link
Member

ZedThree commented Nov 6, 2024

Any chance you could build netcdf locally with debug flags?

@dschwoerer
Copy link
Contributor

Let me try again to install debug symbols ...

@dschwoerer
Copy link
Contributor

@dschwoerer
Copy link
Contributor

==578== Conditional jump or move depends on uninitialised value(s)
==578==    at 0x498BB2B: PyLong_FromUnsignedLong (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x2E2E3E04: UnknownInlinedFun (_netCDF4.c:132349)
==578==    by 0x2E2E3E04: UnknownInlinedFun (_netCDF4.c:62873)
==578==    by 0x2E2E3E04: __pyx_pw_7netCDF4_8_netCDF4_8Variable_37chunking.lto_priv.0 (_netCDF4.c:62684)
==578==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578== 
==578== Conditional jump or move depends on uninitialised value(s)
==578==    at 0x498BB5F: PyLong_FromUnsignedLong (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x2E2E3E04: UnknownInlinedFun (_netCDF4.c:132349)
==578==    by 0x2E2E3E04: UnknownInlinedFun (_netCDF4.c:62873)
==578==    by 0x2E2E3E04: __pyx_pw_7netCDF4_8_netCDF4_8Variable_37chunking.lto_priv.0 (_netCDF4.c:62684)
==578==    by 0x499BFD6: PyObject_Vectorcall (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x49B1E2E: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A058A0: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A2FBC7: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4AB3F0C: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A8AC17: ??? (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x49B331F: _PyEval_EvalFrameDefault (in /usr/lib64/libpython3.13.so.1.0)
==578==    by 0x4A083E6: ??? (in /usr/lib64/libpython3.13.so.1.0)

I have debug symbols for netCDF working, if you want others I can also have them installed ...

@dschwoerer
Copy link
Contributor

@dschwoerer
Copy link
Contributor

Here is another test-run without LTO for python3-netCDF4 as well as with locking disabled for HDF5:
https://download.copr.fedorainfracloud.org/results/davidsch/testing/fedora-rawhide-x86_64/08225352-python-xbout/builder-live.log

That looks pretty much the same, thus I think it is worth it to escalate it to the netcdf team ...

@ZedThree
Copy link
Member

ZedThree commented Nov 7, 2024

I've removed the libnetcdf installed from apt, so it's definitely not that interfering. We're now seeing three different errors:

A complete failure that kills python entirely:

Fatal Python error: Segmentation fault

Thread 0x00007fa666849640 (most recent call first):
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 1031 in __init__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 1022 in explicit_indexing_adapter
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 104 in __getitem__
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 665 in get_duck_array
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 794 in get_duck_array
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 583 in get_duck_array
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py", line 578 in __array__
  File "_thread", line 32678 in ???
  File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/local.py", line 330 in identity
  File /home/runner/work/_temp/8c463f61-b320-41e4-ac[55](https://github.com/boutproject/xBOUT/actions/runs/11720452108/job/32645798972?pr=303#step:6:56)-243967483e70.sh: line 1:  1888 Segmentation fault      (core dumped) pytest -vv --long --cov
xbout/tests/test_animate.py::TestAnimate::test_animate_list_save_as

An HDF5 error (via netCDF) that raises an exception:

xbout/boutdataset.py:1288: in animate_list
    animate_pcolormesh(
xbout/plotting/animate.py:451: in animate_pcolormesh
    image_data = data.values
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/dataarray.py:811: in values
    return self.variable.values
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/variable.py:554: in values
    return _as_array_or_item(self._data)
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/variable.py:352: in _as_array_or_item
    data = np.asarray(data)
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/array/core.py:1697: in __array__
    x = self.compute()
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/base.py:372: in compute
    (result,) = compute(self, traverse=False, **kwargs)
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/dask/base.py:660: in compute
    results = schedule(dsk, keys, **kwargs)
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py:578: in __array__
    return np.asarray(self.get_duck_array(), dtype=dtype, copy=copy)
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py:583: in get_duck_array
    return self.array.get_duck_array()
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py:794: in get_duck_array
    return self.array.get_duck_array()
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py:657: in get_duck_array
    array = self.array[self.key]
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/netCDF4_.py:104: in __getitem__
    return indexing.explicit_indexing_adapter(
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/core/indexing.py:1018: in explicit_indexing_adapter
    result = raw_indexing_method(raw_key.tuple)
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/netCDF4_.py:117: in _getitem
    array = getitem(original_array, key)
src/netCDF4/_netCDF4.pyx:5079: in netCDF4._netCDF4.Variable.__getitem__
    ???
src/netCDF4/_netCDF4.pyx:6051: in netCDF4._netCDF4.Variable._get
    ???

and a bit later when reporting captured warnings:

xbout/tests/test_animate.py::TestAnimate::test_animate_list_save_as
  /opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/_pytest/unraisableexception.py:85: PytestUnraisableExceptionWarning: Exception ignored in: <function CachingFileManager.__del__ at 0x7f14a0699e40>
  
  Traceback (most recent call last):
    File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/file_manager.py", line 250, in __del__
      self.close(needs_lock=False)
    File "/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/xarray/backends/file_manager.py", line 234, in close
      file.close()
    File "src/netCDF4/_netCDF4.pyx", line 2669, in netCDF4._netCDF4.Dataset.close
    File "src/netCDF4/_netCDF4.pyx", line 2636, in netCDF4._netCDF4.Dataset._close
    File "src/netCDF4/_netCDF4.pyx", line 2164, in netCDF4._netCDF4._ensure_nc_success
  RuntimeError: NetCDF: HDF error

And then maybe an memory issue in netCDF4.Variable.chunking:

==578== Conditional jump or move depends on uninitialised value(s)
==578==    at 0x498BB2B: PyLong_FromUnsignedLong (longobject.c:361)
==578==    by 0x2E284D24: __Pyx_PyInt_FromSize_t (_netCDF4.c:132349)
==578==    by 0x2E284D24: __pyx_pf_7netCDF4_8_netCDF4_8Variable_36chunking (_netCDF4.c:62873)
==578==    by 0x2E284D24: __pyx_pw_7netCDF4_8_netCDF4_8Variable_37chunking (_netCDF4.c:62684)
==578==    by 0x499BFD6: UnknownInlinedFun (pycore_call.h:168)
==578==    by 0x499BFD6: PyObject_Vectorcall (call.c:327)

I say maybe because the test doesn't actually seem to fail and there are lots of these uninitialised value errors generated.

Both the explicit errors are in netCDF4.Variable._get which does a fair amount of stuff.

Next step really is to reproduce it locally somehow. Maybe start with the files it's using and see if there's anything weird with them

@dschwoerer
Copy link
Contributor

I have reproduced this locally:

using pytest xbout -vv, i got:

[...]
xbout/tests/test_boutdataset.py::TestSave::test_reload_all[None] Fatal Python error: Fatal Python error: Segmentation fault

Thread 0x00007f544ead76c0 (most recent call first):
  File Segmentation fault"

/usr/lib/python3.13/site-packages/xarray/backends/netCDF4_.py", line 117 in _getitem
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 1018 in explicit_indexing_adapter
  File "/usr/lib/python3.13/site-packages/xarray/backends/netCDF4_.py", line 104 in __getitem__
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 657 in get_duck_array
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 794 in get_duck_array
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 583 in get_duck_array
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 580 in __array__
  File "/usr/lib/python3.13/site-packages/dask/array/core.py", line 122 in getter
  File "/usr/lib/python3.13/site-packages/dask/_task_spec.py", line 651 in __call__
  File "/usr/lib/python3.13/site-packages/dask/local.py", line 229 in execute_task
  File "/usr/lib/python3.13/site-packages/dask/local.py", line 243 in batch_execute_tasks
  File "/usr/lib64/python3.13/concurrent/futures/thread.py", line 58 in run
  File "/usr/lib64/python3.13/concurrent/futures/thread.py", line 92 in _worker
  File "/usr/lib64/python3.13/threading.py", line 992 in run
  File "/usr/lib64/python3.13/threading.py", line 1041 in _bootstrap_inner
  File "/usr/lib64/python3.13/threading.py", line 1012 in _bootstrap

Thread 0x00007f544f2d86c0 (most recent call first):
  File "/usr/lib/python3.13/site-packages/xarray/backends/locks.py", line 64 in __enter__
  File "/usr/lib/python3.13/site-packages/xarray/backends/locks.py", line 231 in __enter__
  File "/usr/lib/python3.13/site-packages/xarray/backends/netCDF4_.py", line 115 in _getitem
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 1018 in explicit_indexing_adapter
  File "/usr/lib/python3.13/site-packages/xarray/backends/netCDF4_.py", line 104 in __getitem__
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 657 in get_duck_array
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 794 in get_duck_array
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 583 in get_duck_array
  File "/usr/lib/python3.13/site-packages/xarray/core/indexing.py", line 580 in __array__
  File "/usr/lib/python3.13/site-packages/dask/array/core.py", line 122 in getter
  File "/usr/lib/python3.13/site-packages/dask/_task_spec.py", line 651 in __call__
  File "/usr/lib/python3.13/site-packages/dask/local.py", line 229 in execute_task
  File "/usr/lib/python3.13/site-packages/dask/local.py", line 243 in batch_execute_tasks
  File "/usr/lib64/python3.13/concurrent/futures/thread.py", line 58 in run
  File "/usr/lib64/python3.13/concurrent/futures/thread.py", line 92 in _worker
  File "/usr/lib64/python3.13/threading.py", line 992 in run
  File "/usr/lib64/python3.13/threading.py", line 1041 in _bootstrap_inner
  File "/usr/lib64/python3.13/threading.py", line 1012 in _bootstrap

Thread 0x00007f544fad96c0 (most recent call first):
  File "/usr/lib/python3.13/site-packages/dask/_task_spec.py", line 500 in __call__
  File "/usr/lib/python3.13/site-packages/dask/_task_spec.py", line 533 in _call_recursively
  File "/usr/lib/python3.13/site-packages/dask/_task_spec.py", line 98 in _identity_cast
  File Segmentation fault (core dumped)

@dschwoerer
Copy link
Contributor

I did run the two TestSave::test_reload_all tests 155 times, without reproducing the segfault ...

@dschwoerer
Copy link
Contributor

I have some more backtraces from the CI:

xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_extra_dims PASSED [ 25%]
xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_apply_geometry PASSED [ 25%]
xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_chunks 
Thread 4 "python3" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd5f4f6c0 (LWP 585)]
0x00007fffe0d7bcb0 in H5FL_reg_malloc () from /lib64/libhdf5.so.310
#0  0x00007fffe0d7bcb0 in H5FL_reg_malloc () from /lib64/libhdf5.so.310
#1  0x00007fffe0e71e6d in H5SL__new_node.lto_priv.0 () from /lib64/libhdf5.so.310
#2  0x00007fffe0e73d4b in H5SL__insert_common () from /lib64/libhdf5.so.310
#3  0x00007fffe0e7438d in H5SL_insert () from /lib64/libhdf5.so.310
#4  0x00007fffe0e409f8 in H5P_create_id () from /lib64/libhdf5.so.310
#5  0x00007fffe0e16971 in H5Pcreate () from /lib64/libhdf5.so.310
#6  0x00007fffe11259e2 in NC4_get_vars () from /lib64/libnetcdf.so.19
#7  0x00007fffe11261d9 in NC4_get_vara () from /lib64/libnetcdf.so.19
#8  0x00007fffe10d2bd2 in NC_get_vara () from /lib64/libnetcdf.so.19
#9  0x00007fffe10d2ce1 in nc_get_vara () from /lib64/libnetcdf.so.19
#10 0x00007fffe13c7302 in __pyx_pf_7netCDF4_8_netCDF4_8Variable_84_get (__pyx_v_self=0x7fffd6a24380, __pyx_v_start=<optimized out>, __pyx_v_count=<optimized out>, __pyx_v_stride=<optimized out>) at src/netCDF4/_netCDF4.c:80071
#11 __pyx_pw_7netCDF4_8_netCDF4_8Variable_85_get (__pyx_v_self=<netCDF4._netCDF4.Variable at remote 0x7fffd6a24380>, __pyx_args=<optimized out>, __pyx_nargs=<optimized out>, __pyx_kwds=<optimized out>) at src/netCDF4/_netCDF4.c:79403
#12 0x00007fffe13f9ed8 in __pyx_pf_7netCDF4_8_netCDF4_8Variable_50__getitem__ (__pyx_v_self=<optimized out>, __pyx_v_elem=<optimized out>) at src/netCDF4/_netCDF4.c:66013
#13 0x00007ffff7b55fd7 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/generated_cases.c.h:1167
#14 0x00007ffff7bd5d9f in _PyEval_EvalFrame (tstate=0x555555faa360, frame=0x7ffff732e7f0, throwflag=0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_ceval.h:119
#15 _PyEval_Vector (tstate=0x555555faa360, func=0x7fffdc90c7c0, locals=0x0, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/ceval.c:1806
#16 _PyFunction_Vectorcall (func=<function at remote 0x7fffdc90c7c0>, stack=<optimized out>, nargsf=<optimized out>, kwnames=0x0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:413
#17 _PyObject_VectorcallTstate (tstate=0x555555faa360, callable=<function at remote 0x7fffdc90c7c0>, args=<optimized out>, nargsf=<optimized out>, kwnames=0x0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_call.h:168

That was 5 failures in 10 runs, all in the test_open_grid_extra_dims tests.
Backtrace is always in hdf5, called from netcdf.

So I installed debug symbols for both, and then I got 0 failures in 10 runs.

I did also run with -k test_open_grid - and got 0 failures in 100 runs.
Locally with over 500 runs, no failure ...

I am trying to run both cases more often ...

@dschwoerer
Copy link
Contributor

I have managed to reproduce this with debug symbols installed :-)
It failed a few times, but then the VM did not responed anymore and a new VM was started.

So maybe it is better to debug this in CI / VM / ... 😨

@dschwoerer
Copy link
Contributor

Wow, I just noticed I killed the VM. I had a run with at least 5 failures (trying to run the tests 10 times) and when I looked again, I had zero failures.
I then looked at the background logs, and found there that the VM went unresponsive, and a new VM has been used.

So far 2 failures:

xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_chunks 
Thread 4 "python3" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd5f506c0 (LWP 809)]
H5FL_reg_malloc (head=0x7fffe10608e0 <H5_H5SL_node_t_reg_free_list.lto_priv.0>) at ../../src/H5FL.c:345
345	        head->list = head->list->next;
#0  H5FL_reg_malloc (head=0x7fffe10608e0 <H5_H5SL_node_t_reg_free_list.lto_priv.0>) at ../../src/H5FL.c:345
#1  0x00007fffe0e71e6d in H5SL__new_node (item=0x555555db3bd0, key=0x555555db3bd0, hashval=1249207996) at ../../src/H5SL.c:633
#2  0x00007fffe0e73d4b in H5SL__insert_common (slist=<optimized out>, item=0x555555db3bd0, key=0x555555db3bd0) at ../../src/H5SL.c:742
#3  0x00007fffe0e7438d in H5SL_insert (slist=<optimized out>, item=<optimized out>, key=<optimized out>) at ../../src/H5SL.c:1035
#4  0x00007fffe0e409f8 in H5P__create (pclass=<optimized out>) at ../../src/H5Pint.c:1881
#5  H5P_create_id (pclass=<optimized out>, app_ref=true) at ../../src/H5Pint.c:1967
#6  0x00007fffe0e16971 in H5Pcreate (cls_id=720575940379279371) at ../../src/H5P.c:237
#7  0x00007fffe11259e2 in NC4_get_vars (ncid=720896, varid=<optimized out>, startp=<optimized out>, countp=<optimized out>, stridep=stridep@entry=0x0, data=0x7fffd00e9d00, mem_nc_type=<optimized out>) at ../libhdf5/../../libhdf5/hdf5var.c:2091
#8  0x00007fffe11261d9 in NC4_get_vara (ncid=<optimized out>, varid=<optimized out>, startp=<optimized out>, countp=<optimized out>, ip=<optimized out>, memtype=<optimized out>) at ../libhdf5/../../libhdf5/hdf5var.c:1402
#9  0x00007fffe10d2bd2 in NC_get_vara (ncid=ncid@entry=720896, varid=varid@entry=1, start=start@entry=0x7fffd00046a0, edges=edges@entry=0x7fffd0026c80, value=value@entry=0x7fffd00e9d00, memtype=6) at ../libdispatch/../../libdispatch/dvarget.c:104
#10 0x00007fffe10d2ce1 in nc_get_vara (ncid=720896, varid=1, startp=startp@entry=0x7fffd00046a0, countp=countp@entry=0x7fffd0026c80, ip=0x7fffd00e9d00) at ../libdispatch/../../libdispatch/dvarget.c:750
#11 0x00007fffe13c7302 in __pyx_pf_7netCDF4_8_netCDF4_8Variable_84_get (__pyx_v_self=0x7fffd69481e0, __pyx_v_start=<optimized out>, __pyx_v_count=<optimized out>, __pyx_v_stride=<optimized out>) at src/netCDF4/_netCDF4.c:80071
#12 __pyx_pw_7netCDF4_8_netCDF4_8Variable_85_get (__pyx_v_self=<netCDF4._netCDF4.Variable at remote 0x7fffd69481e0>, __pyx_args=<optimized out>, __pyx_nargs=<optimized out>, __pyx_kwds=<optimized out>) at src/netCDF4/_netCDF4.c:79403
#13 0x00007fffe13f9ed8 in __pyx_pf_7netCDF4_8_netCDF4_8Variable_50__getitem__ (__pyx_v_self=<optimized out>, __pyx_v_elem=<optimized out>) at src/netCDF4/_netCDF4.c:66013
#14 0x00007ffff7b55fd7 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/generated_cases.c.h:1167
#15 0x00007ffff7bd5d9f in _PyEval_EvalFrame (tstate=0x555555faa340, frame=0x7ffff732e7f0, throwflag=0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_ceval.h:119
#16 _PyEval_Vector (tstate=0x555555faa340, func=0x7fffdc9087c0, locals=0x0, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/ceval.c:1806

and

[Switching to Thread 0x7fffd574f6c0 (LWP 767)]
0x00007fffe0d7c6c9 in H5FL_fac_free (head=0x31, obj=0x55555e055930) at ../../src/H5FL.c:1774
1774	    head->onlist++;
#0  0x00007fffe0d7c6c9 in H5FL_fac_free (head=0x31, obj=0x55555e055930) at ../../src/H5FL.c:1774
#1  0x00007fffe0e72ef3 in H5SL__insert_common (slist=0x55555f4f2dd0, item=0x555555db3060, key=0x555555db3060) at ../../src/H5SL.c:705
#2  0x00007fffe0e7438d in H5SL_insert (slist=<optimized out>, item=<optimized out>, key=<optimized out>) at ../../src/H5SL.c:1035
#3  0x00007fffe0e4075f in H5P_close (plist=0x5555603d3a20) at ../../src/H5Pint.c:5218
#4  0x00007fffe0e3a88d in H5P__close_list_cb (_plist=<optimized out>, request=<optimized out>) at ../../src/H5Pint.c:730
#5  0x00007fffe0dc1c5b in H5I__dec_ref (id=792633534417612735, request=request@entry=0x0) at ../../src/H5Iint.c:970
#6  0x00007fffe0dc1d0f in H5I_dec_ref (id=<optimized out>) at ../../src/H5Iint.c:1009
#7  0x00007fffe0d0e6aa in H5D_close (dataset=0x55555ffd68b0) at ../../src/H5Dint.c:2020
#8  0x00007fffe0f386ed in H5VL__native_dataset_close (dset=<optimized out>, dxpl_id=<optimized out>, req=<optimized out>) at ../../src/H5VLnative_dataset.c:826
#9  0x00007fffe0f5b628 in H5VL__dataset_close.isra.0 (obj=<optimized out>, dxpl_id=<optimized out>, req=<optimized out>, cls=<optimized out>) at ../../src/H5VLcallback.c:2619
#10 0x00007fffe0f2717f in H5VL_dataset_close (vol_obj=0x55555a766650, dxpl_id=792633534417207304, req=0x0) at ../../src/H5VLcallback.c:2656
#11 0x00007fffe0d0b327 in H5D__close_cb (dset_vol_obj=0x55555a766650, request=<optimized out>) at ../../src/H5Dint.c:298
#12 0x00007fffe0dc1c5b in H5I__dec_ref (id=id@entry=360287970189864103, request=request@entry=0x0) at ../../src/H5Iint.c:970
#13 0x00007fffe0dc1d71 in H5I__dec_app_ref (id=id@entry=360287970189864103, request=request@entry=0x0) at ../../src/H5Iint.c:1041
#14 0x00007fffe0dc1f8b in H5I__dec_app_ref_always_close (id=360287970189864103, request=0x0) at ../../src/H5Iint.c:1150
#15 H5I_dec_app_ref_always_close (id=360287970189864103) at ../../src/H5Iint.c:1191

And here is another one:

xbout/tests/test_load.py::TestOpen::test_combine_along_t SKIPPED         [ 30%]
xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths0-False-False] 
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fffe0d72503 in H5FL__reg_gc_list (head=0x7fffe105dde0 <H5_H5CX_node_t_reg_free_list.lto_priv.0>) at ../../src/H5FL.c:420
420	        tmp = free_list->next;
#0  0x00007fffe0d72503 in H5FL__reg_gc_list (head=0x7fffe105dde0 <H5_H5CX_node_t_reg_free_list.lto_priv.0>) at ../../src/H5FL.c:420
#1  H5FL__reg_gc () at ../../src/H5FL.c:464
#2  H5FL_reg_free (head=<optimized out>, obj=<optimized out>) at ../../src/H5FL.c:307
#3  H5FL_reg_free (head=<optimized out>, obj=<optimized out>) at ../../src/H5FL.c:268
#4  0x00007fffe0dae0a9 in H5HF__hdr_free (hdr=0x555557feb7b0) at ../../src/H5HFhdr.c:1330
#5  0x00007fffe0da557d in H5HF__cache_hdr_free_icr (_thing=<optimized out>) at ../../src/H5HFcache.c:816
#6  0x00007fffe0cd50fd in H5C__flush_single_entry (f=0x55555ba73640, entry_ptr=0x555557feb7b0, flags=24592) at ../../src/H5Centry.c:861
#7  0x00007fffe0ce20df in H5C__flush_invalidate_ring (f=<optimized out>, ring=1, flags=<optimized out>) at ../../src/H5Cint.c:1453
#8  H5C__flush_invalidate_cache (f=0x55555ba73640, flags=<optimized out>) at ../../src/H5Cint.c:1051
#9  0x00007fffe0cd9d24 in H5C_dest (f=0x55555ba73640) at ../../src/H5C.c:501
#10 0x00007fffe0cb5d0f in H5AC_dest (f=0x55555ba73640) at ../../src/H5AC.c:476
#11 0x00007fffe0d49388 in H5F__dest (f=f@entry=0x55555ba73640, flush=flush@entry=true, free_on_failure=free_on_failure@entry=false) at ../../src/H5Fint.c:1536
#12 0x00007fffe0d4c6d4 in H5F_try_close (f=0x55555ba73640, was_closed=was_closed@entry=0x0) at ../../src/H5Fint.c:2653
#13 0x00007fffe0d4ca91 in H5F__close (f=<optimized out>) at ../../src/H5Fint.c:2455
#14 0x00007fffe0f3a36d in H5VL__native_file_close (file=0x55555ba73640, dxpl_id=<optimized out>, req=<optimized out>) at ../../src/H5VLnative_file.c:777
#15 0x00007fffe0f5aeb8 in H5VL__file_close.isra.0 (obj=<optimized out>, dxpl_id=<optimized out>, req=<optimized out>, cls=<optimized out>) at ../../src/H5VLcallback.c:4121
#16 0x00007fffe0f30dcf in H5VL_file_close (vol_obj=0x5555586924f0, dxpl_id=792633534417207304, req=0x0) at ../../src/H5VLcallback.c:4152
#17 0x00007fffe0d45d52 in H5F__close_cb (file_vol_obj=0x5555586924f0, request=<optimized out>) at ../../src/H5Fint.c:217
#18 0x00007fffe0dc1c5b in H5I__dec_ref (id=id@entry=72057594037929534, request=request@entry=0x0) at ../../src/H5Iint.c:970
#19 0x00007fffe0dc1d71 in H5I__dec_app_ref (id=72057594037929534, request=request@entry=0x0) at ../../src/H5Iint.c:1041
#20 0x00007fffe0dc1e2f in H5I_dec_app_ref (id=<optimized out>) at ../../src/H5Iint.c:1086
#21 0x00007fffe0d3f2f8 in H5Fclose (file_id=72057594037929534) at ../../src/H5F.c:1046
#22 0x00007fffe111b835 in nc4_close_netcdf4_file (h5=0x55555cc048e0, abort=0, memio=0x0) at ../libhdf5/../../libhdf5/hdf5file.c:233
#23 0x00007fffe1120138 in NC4_close (ncid=<optimized out>, params=<optimized out>) at ../libhdf5/../../libhdf5/hdf5file.c:633
#24 0x00007fffe10d806b in nc_close (ncid=131072) at ../libdispatch/../../libdispatch/dfile.c:1308
#25 0x00007fffe132421e in __pyx_pf_7netCDF4_8_netCDF4_7Dataset_14_close (__pyx_v_self=0x7fffd8be6240, __pyx_v_check_err=True) at src/netCDF4/_netCDF4.c:30377
#26 __pyx_pw_7netCDF4_8_netCDF4_7Dataset_15_close (__pyx_v_self=<netCDF4._netCDF4.Dataset at remote 0x7fffd8be6240>, __pyx_args=<optimized out>, __pyx_nargs=1, __pyx_kwds=<optimized out>) at src/netCDF4/_netCDF4.c:30326
#27 0x00007fffe1323853 in __pyx_pf_7netCDF4_8_netCDF4_7Dataset_18close (__pyx_v_self=<optimized out>) at src/netCDF4/_netCDF4.c:30925
#28 __pyx_pw_7netCDF4_8_netCDF4_7Dataset_19close (__pyx_v_self=<optimized out>, __pyx_args=<optimized out>, __pyx_nargs=<optimized out>, __pyx_kwds=<optimized out>) at src/netCDF4/_netCDF4.c:30813
#29 0x00007ffff7b42fd7 in _PyObject_VectorcallTstate (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<_cython_3_0_11.cython_function_or_method at remote 0x7fffe15217d0>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_call.h:168
#30 PyObject_Vectorcall (callable=<_cython_3_0_11.cython_function_or_method at remote 0x7fffe15217d0>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:327
#31 0x00007ffff7b58e2f in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/generated_cases.c.h:813
#32 0x00007ffff7b8745f in _PyObject_VectorcallTstate (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<function at remote 0x7fffdc8daa20>, args=0x7fffffffbcf8, nargsf=9223372036854775809, kwnames=0x0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_call.h:168
#33 PyObject_CallOneArg (func=<function at remote 0x7fffdc8daa20>, arg=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:395
#34 0x00007ffff7c7a606 in slot_tp_finalize (self=<CachingFileManager(_opener=<type at remote 0x7fffe1468ac0>, _args=('/tmp/pytest-of-mockbuild/pytest-8/test_reload_separate_variables_time_split1/temp_boutdata_1_T.nc',), _mode='r', _kwargs={'clobber': True, 'diskless': False, 'persist': False, 'format': 'NETCDF4'}, _use_default_lock=True, _lock=<_thread.lock at remote 0x7fffd6b20780>, _cache=<LRUCache at remote 0x7fffdc8e03c0>, _manager_id='e7b86aeb-52e5-45ad-a514-9f0dcf4bb559', _key=<_HashedSequence(hashvalue=-7063547784399903334) at remote 0x7fffd6127fc0>, _ref_counter=<_RefCounter(_counts={<_HashedSequence(hashvalue=443758223283057862) at remote 0x7fffd6c4d400>: 1, <_HashedSequence(hashvalue=8835520193079304715) at remote 0x7fffd7d97bb0>: 1, <_HashedSequence(hashvalue=3675166950999576538) at remote 0x7fffd7a619a0>: 1, <_HashedSequence(hashvalue=-7339155120130062816) at remote 0x7fffd6f747d0>: 1, <_HashedSequence(hashvalue=7609371609376905818) at remote 0x7fffd6d55b30>: 1, <_HashedSequence(hashvalue=-7674168586845967691) at remote 0x7fffd6d56ee0>: 1, <_Has...(truncated)) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/typeobject.c:9830
#35 0x00007ffff7b64581 in finalize_garbage (tstate=0x7ffff7f41860 <_PyRuntime+282976>, collectable=0x7fffffffbe00) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/gc.c:980
#36 gc_collect_main (tstate=0x7ffff7f41860 <_PyRuntime+282976>, generation=2, reason=_Py_GC_REASON_HEAP) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/gc.c:1408
#37 0x00007ffff7c25354 in _Py_HandlePending (tstate=0x7ffff7f41860 <_PyRuntime+282976>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/ceval_gil.c:1296
#38 0x00007ffff7b619ba in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/generated_cases.c.h:3606
#39 0x00007ffff7baf29d in _PyEval_EvalFrame (tstate=0x7ffff7f41860 <_PyRuntime+282976>, frame=0x7ffff7562760, throwflag=0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_ceval.h:119
#40 _PyEval_Vector (tstate=0x7ffff7f41860 <_PyRuntime+282976>, func=0x7fffdc93cae0, locals=0x0, args=0x7fffd6305230, argcount=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/ceval.c:1806
#41 _PyFunction_Vectorcall (func=<function at remote 0x7fffdc93cae0>, stack=0x7fffd6305230, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:413
#42 _PyObject_VectorcallTstate (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<function at remote 0x7fffdc93cae0>, args=0x7fffd6305230, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_call.h:168
#43 method_vectorcall (method=<optimized out>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/classobject.c:92
#44 0x00007ffff7b5a320 in PyObject_Call (callable=<method at remote 0x7fffd6cd0b00>, args=(<Array(shape=(6, 8, 12, 7), ndim=4, numblocks=(1, 4, 3, 1), size=4032) at remote 0x7fffd6d018b0>, <Array(shape=(6, 8, 12, 7), ndim=4, numblocks=(1, 4, 3, 1), size=4032) at remote 0x7fffd6d00770>, <Array(shape=(6, 8, 12), ndim=3, numblocks=(1, 4, 3), size=576) at remote 0x7fffd6d03f50>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d01cd0>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d01130>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d01550>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d03a10>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d019d0>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d02a50>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d03cb0>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d02510>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remo...(truncated), kwargs={}) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:373
#45 PyCFunction_Call (callable=<method at remote 0x7fffd6cd0b00>, args=(<Array(shape=(6, 8, 12, 7), ndim=4, numblocks=(1, 4, 3, 1), size=4032) at remote 0x7fffd6d018b0>, <Array(shape=(6, 8, 12, 7), ndim=4, numblocks=(1, 4, 3, 1), size=4032) at remote 0x7fffd6d00770>, <Array(shape=(6, 8, 12), ndim=3, numblocks=(1, 4, 3), size=576) at remote 0x7fffd6d03f50>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d01cd0>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d01130>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d01550>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d03a10>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d019d0>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d02a50>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d03cb0>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remote 0x7fffd6d02510>, <Array(shape=(8, 12), ndim=2, numblocks=(4, 3), size=96) at remo...(truncated), kwargs={}) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:381
#46 _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/generated_cases.c.h:1355
#47 0x00007ffff7baf3e7 in _PyEval_EvalFrame (tstate=0x7ffff7f41860 <_PyRuntime+282976>, frame=<optimized out>, throwflag=0) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_ceval.h:119
#48 _PyEval_Vector (tstate=0x7ffff7f41860 <_PyRuntime+282976>, func=0x7fffd5f64c20, locals=0x0, args=0x7fffd6e2ff60, argcount=1, kwnames=<unknown at remote 0x1>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/ceval.c:1806
#49 _PyFunction_Vectorcall (func=<function at remote 0x7fffd5f64c20>, stack=0x7fffd6e2ff60, nargsf=1, kwnames=<unknown at remote 0x1>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:413
#50 _PyObject_VectorcallTstate (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<function at remote 0x7fffd5f64c20>, args=0x7fffd6e2ff60, nargsf=1, kwnames=<unknown at remote 0x1>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Include/internal/pycore_call.h:168
#51 method_vectorcall (method=method@entry=<method at remote 0x7fffd60aa480>, args=args@entry=0x7fffd6e2ff68, nargsf=<optimized out>, kwnames=kwnames@entry=('tmp_path_factory', 'bout_xyt_example_files', 'bout_v5', 'metric_3D', 'lengths')) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/classobject.c:62
#52 0x00007ffff7c31c18 in _PyVectorcall_Call (tstate=0x7ffff7f41860 <_PyRuntime+282976>, func=0x7ffff7baf030 <method_vectorcall>, callable=<method at remote 0x7fffd60aa480>, tuple=<optimized out>, kwargs=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:285
#53 _PyObject_Call (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<method at remote 0x7fffd60aa480>, args=<optimized out>, kwargs=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:348
#54 0x00007ffff7b5a320 in PyObject_Call (callable=<method at remote 0x7fffd60aa480>, args=(), kwargs={'tmp_path_factory': <TempPathFactory(_given_basetemp=None, _trace=<TagTracerSub(root=<TagTracer(_tags2proc={}, _writer=None, indent=0) at remote 0x7ffff6a1a270>, tags=('config', 'tmpdir')) at remote 0x7fffd8b2d480>, _retention_count=3, _retention_policy='all', _basetemp=<PosixPath at remote 0x7fffd62374c0>) at remote 0x7fffdaeacad0>, 'bout_xyt_example_files': <function at remote 0x7fffd87c3920>, 'bout_v5': False, 'metric_3D': False, 'lengths': (6, 2, 4, 7)}) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:373
#55 PyCFunction_Call (callable=<method at remote 0x7fffd60aa480>, args=(), kwargs={'tmp_path_factory': <TempPathFactory(_given_basetemp=None, _trace=<TagTracerSub(root=<TagTracer(_tags2proc={}, _writer=None, indent=0) at remote 0x7ffff6a1a270>, tags=('config', 'tmpdir')) at remote 0x7fffd8b2d480>, _retention_count=3, _retention_policy='all', _basetemp=<PosixPath at remote 0x7fffd62374c0>) at remote 0x7fffdaeacad0>, 'bout_xyt_example_files': <function at remote 0x7fffd87c3920>, 'bout_v5': False, 'metric_3D': False, 'lengths': (6, 2, 4, 7)}) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:381
#56 _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/generated_cases.c.h:1355
#57 0x00007ffff7c22c6e in _PyObject_VectorcallDictTstate (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<function at remote 0x7ffff717b740>, args=<optimized out>, nargsf=<optimized out>, kwargs=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:146
#58 0x00007ffff7c78da7 in _PyObject_Call_Prepend (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<function at remote 0x7ffff717b740>, obj=<optimized out>, args=(), kwargs={'pyfuncitem': <Function(keywords=<NodeKeywords at remote 0x7fffd60aa440>, own_markers=[<Mark(name='parametrize', args=('lengths', [(6, 2, 4, 7), (6, 2, 4, 1)]), kwargs={}, _param_ids_from=None, _param_ids_generated=None) at remote 0x7fffd60420b0>, <Mark(name='parametrize', args=('bout_v5,metric_3D', [(False, False), (True, False), (True, True)]), kwargs={}, _param_ids_from=None, _param_ids_generated=None) at remote 0x7fffd6042040>], extra_keyword_matches=set(), stash=<Stash at remote 0x7fffd80a69e0>, _report_sections=[], user_properties=[], originalname='test_combine_along_xy', _instance=<TestOpen() at remote 0x7fffd81db5f0>, _obj=<method at remote 0x7fffd60aa480>, _fixtureinfo=<FuncFixtureInfo at remote 0x7fffd60aa900>, fixturenames=['tmp_path_factory', 'bout_xyt_example_files', 'bout_v5', 'metric_3D', 'lengths', 'request'], funcargs={'tmp_path_factory': <TempPathFactory(_given_basetemp=None, _trace=<TagTracerSub(root=<TagTracer(_tags2proc={}, _writer=None, indent=0) at remote 0x7ffff6a1a270>, tags=('config...(truncated)) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:504
#59 slot_tp_call (self=<optimized out>, args=(), kwds={'pyfuncitem': <Function(keywords=<NodeKeywords at remote 0x7fffd60aa440>, own_markers=[<Mark(name='parametrize', args=('lengths', [(6, 2, 4, 7), (6, 2, 4, 1)]), kwargs={}, _param_ids_from=None, _param_ids_generated=None) at remote 0x7fffd60420b0>, <Mark(name='parametrize', args=('bout_v5,metric_3D', [(False, False), (True, False), (True, True)]), kwargs={}, _param_ids_from=None, _param_ids_generated=None) at remote 0x7fffd6042040>], extra_keyword_matches=set(), stash=<Stash at remote 0x7fffd80a69e0>, _report_sections=[], user_properties=[], originalname='test_combine_along_xy', _instance=<TestOpen() at remote 0x7fffd81db5f0>, _obj=<method at remote 0x7fffd60aa480>, _fixtureinfo=<FuncFixtureInfo at remote 0x7fffd60aa900>, fixturenames=['tmp_path_factory', 'bout_xyt_example_files', 'bout_v5', 'metric_3D', 'lengths', 'request'], funcargs={'tmp_path_factory': <TempPathFactory(_given_basetemp=None, _trace=<TagTracerSub(root=<TagTracer(_tags2proc={}, _writer=None, indent=0) at remote 0x7ffff6a1a270>, tags=('config...(truncated)) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/typeobject.c:9537
#60 0x00007ffff7b3f62b in _PyObject_MakeTpCall (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<HookCaller at remote 0x7ffff6a3e5c0>, args=<optimized out>, nargs=0, keywords=('pyfuncitem',)) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:242
#61 0x00007ffff7b5f200 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Python/generated_cases.c.h:1502
#62 0x00007ffff7c22c6e in _PyObject_VectorcallDictTstate (tstate=0x7ffff7f41860 <_PyRuntime+282976>, callable=<function at remote 0x7ffff717b740>, args=<optimized out>, nargsf=<optimized out>, kwargs=<optimized out>) at /usr/src/debug/python3.13-3.13.0-1.fc42.x86_64/Objects/call.c:146

(output ends here, so VM is probably dead as well; after 3 failures and 6 successful runs)

Copy link
Contributor

@dschwoerer dschwoerer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we merge this?
The segfaults also happened before, so things are not made worse by this PR ...

@TomNicholas
Copy link
Collaborator

Sorry about this guys. Are you able to reproduce this without xarray? If not has it been raised upstream?

@ZedThree ZedThree merged commit 0761754 into master Dec 10, 2024
11 of 13 checks passed
@bendudson bendudson deleted the xarray-2024-07 branch December 10, 2024 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants