Skip to content

Conversation

@gsitcia
Copy link
Contributor

@gsitcia gsitcia commented Jun 24, 2025

Change call of gmt_M_free to gmt_M_free_aligned in gmtlib_free_vector_ptr to match gmt_M_memory_aligned in gmt_create_vector.

At least for me, it was segfaulting because it would allocate with fftw and then try to deallocate with free.

@welcome
Copy link

welcome bot commented Jun 24, 2025

💖 Thanks for opening this pull request! 💖

Please make sure you read our Contributing Guide and abide by our Code of Conduct.

A few things to keep in mind:

  • If you need help writing tests, take a look at the existing ones for inspiration. If you don't know where to start, let us know and we'll walk you through it.
  • All new features should be documented. It helps to write the comments below for your functions describing the it, all arguments, and return types before writing the code. This will help you think about your code design and results in better code.
  • We are grateful that you put in the effort to do this! 🎉

@joa-quim
Copy link
Member

joa-quim commented Jun 24, 2025

Hi,

Could you please provide an example where a crash occurred?

Operating System?

@gsitcia
Copy link
Contributor Author

gsitcia commented Jun 25, 2025

This is using Debian via WSL 2 on Windows 11 Pro 23H2.

conda create -n test -c conda-forge pygmt=0.16.0=pyhd8ed1ab_0 liblapack=3.9.0=32_hc41d3b0_mkl

(the mkl version of lapack comes from installing pytorch)

import pygmt
data = pygmt.datasets.load_sample_data(name="japan_quakes")
region = [
    data.longitude.min() - 1,
    data.longitude.max() + 1,
    data.latitude.min() - 1,
    data.latitude.max() + 1,
]
fig = pygmt.Figure()
fig.basemap(region=region, projection="M15c", frame=True)
fig.coast(land="black", water="skyblue")
fig.plot(x=data.longitude, y=data.latitude, style="c0.3c", fill="white", pen="black")
fig.show()

It errors at the fig.plot call

@yvonnefroehlich
Copy link
Member

Hi @gsitcia,
Thanks for the code example. Can you please also post the error message. Futuremore, please post the output of pygmt.show_versions(). Did you try running a related GMT code? Does this also crash?

@joa-quim
Copy link
Member

I don’t understand. You mentioned a crash in C because of some memory was allocated by FFTW but now this example has no call to any fftw function.

And please, restrict here to plain GMT commands, not pygmt.

Your PR cannot be accepted as is because it changes a too general function used in many other situations. We need to fully reproduce the crash in or to see what’s the best fix.

@gsitcia
Copy link
Contributor Author

gsitcia commented Jun 25, 2025

Crash log:

*** Error in `python3': double free or corruption (out): 0x0000558dfa2c5a80 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81329)[0x7f1b93a9a329]
/home/alexander/miniforge-pypy3/envs/test/lib/libgmt.so(gmtlib_free_vector_ptr+0x11c)[0x7f1b7b8abc8c]
/home/alexander/miniforge-pypy3/envs/test/lib/libgmt.so(+0x4a0e1)[0x7f1b7b8320e1]
/home/alexander/miniforge-pypy3/envs/test/lib/libgmt.so(gmtlib_garbage_collection+0x16b)[0x7f1b7b840e1b]
/home/alexander/miniforge-pypy3/envs/test/lib/libgmt.so(GMT_Destroy_Session+0x59)[0x7f1b7b841159]
/home/alexander/miniforge-pypy3/envs/test/lib/python3.13/lib-dynload/../../libffi.so.8(+0x6d8a)[0x7f1b9477bd8a]
/home/alexander/miniforge-pypy3/envs/test/lib/python3.13/lib-dynload/../../libffi.so.8(+0x61cd)[0x7f1b9477b1cd]
/home/alexander/miniforge-pypy3/envs/test/lib/python3.13/lib-dynload/../../libffi.so.8(ffi_call+0xcd)[0x7f1b9477b91d]
/home/alexander/miniforge-pypy3/envs/test/lib/python3.13/lib-dynload/_ctypes.cpython-313-x86_64-linux-gnu.so(+0x15d4c)[0x7f1b8b5e4d4c]
/home/alexander/miniforge-pypy3/envs/test/lib/python3.13/lib-dynload/_ctypes.cpython-313-x86_64-linux-gnu.so(+0x86b1)[0x7f1b8b5d76b1]
python3(_PyObject_MakeTpCall+0x36c)[0x558df7e3d07c]
python3(+0xa5468)[0x558df7d32468]
python3(+0x2061d3)[0x558df7e931d3]
python3(PyObject_Vectorcall+0x2e)[0x558df7e3f0fe]
python3(+0x9ee73)[0x558df7d2be73]
python3(PyEval_EvalCode+0xa1)[0x558df7f02171]
python3(+0x2b3010)[0x558df7f40010]
python3(+0x2b09cc)[0x558df7f3d9cc]
python3(+0x2ad876)[0x558df7f3a876]
python3(+0x2ad4a8)[0x558df7f3a4a8]
python3(+0x2ad2bc)[0x558df7f3a2bc]
python3(Py_RunMain+0x32e)[0x558df7f386ae]
python3(Py_BytesMain+0x37)[0x558df7eedd97]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f1b93a3b555]
python3(+0x26018e)[0x558df7eed18e]
======= Memory map: ========
558df7c8d000-558df7d11000 r--p 00000000 fd:02 232732187                  /home/alexander/miniforge-pypy3/envs/test/bin/python3.13
558df7d11000-558df7fa1000 r-xp 00084000 fd:02 232732187                  /home/alexander/miniforge-pypy3/envs/test/bin/python3.13
558df7fa1000-558df811d000 r--p 00314000 fd:02 232732187                  /home/alexander/miniforge-pypy3/envs/test/bin/python3.13
558df811d000-558df816e000 r--p 0048f000 fd:02 232732187                  /home/alexander/miniforge-pypy3/envs/test/bin/python3.13
558df816e000-558df81ef000 rw-p 004e0000 fd:02 232732187                  /home/alexander/miniforge-pypy3/envs/test/bin/python3.13
558df81ef000-558df8268000 rw-p 00000000 00:00 0
558df8f02000-558dfac20000 rw-p 00000000 00:00 0                          [heap]
7f1b6c000000-7f1b6c021000 rw-p 00000000 00:00 0
7f1b6c021000-7f1b70000000 ---p 00000000 00:00 0
7f1b733b1000-7f1b733b7000 r-xp 00000000 fd:00 41990701                   /usr/lib64/libnss_dns-2.17.so
7f1b733b7000-7f1b735b6000 ---p 00006000 fd:00 41990701                   /usr/lib64/libnss_dns-2.17.so
7f1b735b6000-7f1b735b7000 r--p 00005000 fd:00 41990701                   /usr/lib64/libnss_dns-2.17.so
7f1b735b7000-7f1b735b8000 rw-p 00006000 fd:00 41990701                   /usr/lib64/libnss_dns-2.17.so
7f1b735b8000-7f1b735c4000 r-xp 00000000 fd:00 41990705                   /usr/lib64/libnss_files-2.17.so
7f1b735c4000-7f1b737c3000 ---p 0000c000 fd:00 41990705                   /usr/lib64/libnss_files-2.17.so
7f1b737c3000-7f1b737c4000 r--p 0000b000 fd:00 41990705                   /usr/lib64/libnss_files-2.17.so
7f1b737c4000-7f1b737c5000 rw-p 0000c000 fd:00 41990705                   /usr/lib64/libnss_files-2.17.so
7f1b737c5000-7f1b737cb000 rw-p 00000000 00:00 0
7f1b737cb000-7f1b737cc000 ---p 00000000 00:00 0
7f1b737cc000-7f1b73fcc000 rw-p 00000000 00:00 0
7f1b7420e000-7f1b7430e000 rw-p 00000000 00:00 0
7f1b7430e000-7f1b7431b000 r--p 00000000 fd:02 272902220                  /home/alexander/miniforge-pypy3/envs/test/lib/libminizip.so.4.0.10
7f1b7431b000-7f1b7432d000 r-xp 0000d000 fd:02 272902220                  /home/alexander/miniforge-pypy3/envs/test/lib/libminizip.so.4.0.10
7f1b7432d000-7f1b74333000 r--p 0001f000 fd:02 272902220                  /home/alexander/miniforge-pypy3/envs/test/lib/libminizip.so.4.0.10
7f1b74333000-7f1b74334000 r--p 00025000 fd:02 272902220                  /home/alexander/miniforge-pypy3/envs/test/lib/libminizip.so.4.0.10
7f1b74334000-7f1b74335000 rw-p 00026000 fd:02 272902220                  /home/alexander/miniforge-pypy3/envs/test/lib/libminizip.so.4.0.10
7f1b74335000-7f1b74336000 r--p 00000000 fd:02 478622284                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlicommon.so.1.1.0
7f1b74336000-7f1b74337000 r-xp 00001000 fd:02 478622284                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlicommon.so.1.1.0
7f1b74337000-7f1b74356000 r--p 00002000 fd:02 478622284                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlicommon.so.1.1.0
7f1b74356000-7f1b74357000 r--p 00021000 fd:02 478622284                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlicommon.so.1.1.0
7f1b74357000-7f1b74358000 rw-p 00022000 fd:02 478622284                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlicommon.so.1.1.0
7f1b74358000-7f1b74361000 r--p 00000000 fd:02 1030828130                 /home/alexander/miniforge-pypy3/envs/test/lib/libtiff.so.6.1.0
7f1b74361000-7f1b743b6000 r-xp 00009000 fd:02 1030828130                 /home/alexander/miniforge-pypy3/envs/test/lib/libtiff.so.6.1.0
7f1b743b6000-7f1b743e7000 r--p 0005e000 fd:02 1030828130                 /home/alexander/miniforge-pypy3/envs/test/lib/libtiff.so.6.1.0
7f1b743e7000-7f1b743ec000 r--p 0008f000 fd:02 1030828130                 /home/alexander/miniforge-pypy3/envs/test/lib/libtiff.so.6.1.0
7f1b743ec000-7f1b743ed000 rw-p 00094000 fd:02 1030828130                 /home/alexander/miniforge-pypy3/envs/test/lib/libtiff.so.6.1.0
7f1b743ed000-7f1b743ee000 r--p 00000000 fd:02 178070570                  /home/alexander/miniforge-pypy3/envs/test/lib/libcharset.so.1.0.0
7f1b743ee000-7f1b743ef000 r-xp 00001000 fd:02 178070570                  /home/alexander/miniforge-pypy3/envs/test/lib/libcharset.so.1.0.0
7f1b743ef000-7f1b743f0000 r--p 00002000 fd:02 178070570                  /home/alexander/miniforge-pypy3/envs/test/lib/libcharset.so.1.0.0
7f1b743f0000-7f1b743f1000 r--p 00002000 fd:02 178070570                  /home/alexander/miniforge-pypy3/envs/test/lib/libcharset.so.1.0.0
7f1b743f1000-7f1b743f2000 rw-p 00003000 fd:02 178070570                  /home/alexander/miniforge-pypy3/envs/test/lib/libcharset.so.1.0.0
7f1b743f2000-7f1b743f4000 r--p 00000000 fd:02 478624300                  /home/alexander/miniforge-pypy3/envs/test/lib/libfreexl.so.1.2.0
7f1b743f4000-7f1b743ff000 r-xp 00002000 fd:02 478624300                  /home/alexander/miniforge-pypy3/envs/test/lib/libfreexl.so.1.2.0
7f1b743ff000-7f1b74402000 r--p 0000d000 fd:02 478624300                  /home/alexander/miniforge-pypy3/envs/test/lib/libfreexl.so.1.2.0
7f1b74402000-7f1b74403000 r--p 0000f000 fd:02 478624300                  /home/alexander/miniforge-pypy3/envs/test/lib/libfreexl.so.1.2.0
7f1b74403000-7f1b74404000 rw-p 00010000 fd:02 478624300                  /home/alexander/miniforge-pypy3/envs/test/lib/libfreexl.so.1.2.0
7f1b74404000-7f1b74416000 r--p 00000000 fd:02 478622268                  /home/alexander/miniforge-pypy3/envs/test/lib/librttopo.so.1.1.0
7f1b74416000-7f1b74460000 r-xp 00012000 fd:02 478622268                  /home/alexander/miniforge-pypy3/envs/test/lib/librttopo.so.1.1.0
7f1b74460000-7f1b74477000 r--p 0005c000 fd:02 478622268                  /home/alexander/miniforge-pypy3/envs/test/lib/librttopo.so.1.1.0
7f1b74477000-7f1b74479000 r--p 00073000 fd:02 478622268                  /home/alexander/miniforge-pypy3/envs/test/lib/librttopo.so.1.1.0
7f1b74479000-7f1b7447a000 rw-p 00075000 fd:02 478622268                  /home/alexander/miniforge-pypy3/envs/test/lib/librttopo.so.1.1.0
7f1b7447a000-7f1b7447c000 r--p 00000000 fd:02 80800800                   /home/alexander/miniforge-pypy3/envs/test/lib/liburiparser.so.1.0.31
7f1b7447c000-7f1b74487000 r-xp 00002000 fd:02 80800800                   /home/alexander/miniforge-pypy3/envs/test/lib/liburiparser.so.1.0.31
7f1b74487000-7f1b74489000 r--p 0000d000 fd:02 80800800                   /home/alexander/miniforge-pypy3/envs/test/lib/liburiparser.so.1.0.31
7f1b74489000-7f1b7448a000 r--p 0000e000 fd:02 80800800                   /home/alexander/miniforge-pypy3/envs/test/lib/liburiparser.so.1.0.31
7f1b7448a000-7f1b7448b000 rw-p 0000f000 fd:02 80800800                   /home/alexander/miniforge-pypy3/envs/test/lib/liburiparser.so.1.0.31
7f1b7448b000-7f1b7448c000 r--p 00000000 fd:02 609557142                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlienc.so.1.1.0
7f1b7448c000-7f1b744e5000 r-xp 00001000 fd:02 609557142                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlienc.so.1.1.0
7f1b744e5000-7f1b74537000 r--p 0005a000 fd:02 609557142                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlienc.so.1.1.0
7f1b74537000-7f1b74538000 r--p 000ab000 fd:02 609557142                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlienc.so.1.1.0
7f1b74538000-7f1b74539000 rw-p 000ac000 fd:02 609557142                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlienc.so.1.1.0
7f1b74539000-7f1b7453a000 r--p 00000000 fd:02 420353077                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlidec.so.1.1.0
7f1b7453a000-7f1b74542000 r-xp 00001000 fd:02 420353077                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlidec.so.1.1.0
7f1b74542000-7f1b74545000 r--p 00009000 fd:02 420353077                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlidec.so.1.1.0
7f1b74545000-7f1b74546000 r--p 0000b000 fd:02 420353077                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlidec.so.1.1.0
7f1b74546000-7f1b74547000 rw-p 0000c000 fd:02 420353077                  /home/alexander/miniforge-pypy3/envs/test/lib/libbrotlidec.so.1.1.0
7f1b74547000-7f1b74549000 r--p 00000000 fd:02 232285840                  /home/alexander/miniforge-pypy3/envs/test/lib/libhwy.so.1.2.0
7f1b74549000-7f1b74550000 r-xp 00002000 fd:02 232285840                  /home/alexander/miniforge-pypy3/envs/test/lib/libhwy.so.1.2.0
7f1b74550000-7f1b74552000 r--p 00009000 fd:02 232285840                  /home/alexander/miniforge-pypy3/envs/test/lib/libhwy.so.1.2.0
7f1b74552000-7f1b74553000 r--p 0000a000 fd:02 232285840                  /home/alexander/miniforge-pypy3/envs/test/lib/libhwy.so.1.2.0
7f1b74553000-7f1b74554000 rw-p 0000b000 fd:02 232285840                  /home/alexander/miniforge-pypy3/envs/test/lib/libhwy.so.1.2.0
7f1b74554000-7f1b74556000 r--p 00000000 fd:02 548749493                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_cms.so.0.11.1
7f1b74556000-7f1b74595000 r-xp 00002000 fd:02 548749493                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_cms.so.0.11.1
7f1b74595000-7f1b74599000 r--p 00041000 fd:02 548749493                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_cms.so.0.11.1
7f1b74599000-7f1b7459a000 r--p 00044000 fd:02 548749493                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_cms.so.0.11.1
7f1b7459a000-7f1b7459b000 rw-p 00045000 fd:02 548749493                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_cms.so.0.11.1
7f1b7459b000-7f1b762ec000 r--p 00000000 fd:02 548748890                  /home/alexander/miniforge-pypy3/envs/test/lib/libicudata.so.75.1
7f1b762ec000-7f1b762ed000 r--p 01d50000 fd:02 548748890                  /home/alexander/miniforge-pypy3/envs/test/lib/libicudata.so.75.1
7f1b762ed000-7f1b763f8000 r--p 00000000 fd:02 548748904                  /home/alexander/miniforge-pypy3/envs/test/lib/libicui18n.so.75.1
7f1b763f8000-7f1b765c3000 r-xp 0010b000 fd:02 548748904                  /home/alexander/miniforge-pypy3/envs/test/lib/libicui18n.so.75.1
7f1b765c3000-7f1b76661000 r--p 002d6000 fd:02 548748904                  /home/alexander/miniforge-pypy3/envs/test/lib/libicui18n.so.75.1
7f1b76661000-7f1b76674000 r--p 00373000 fd:02 548748904                  /home/alexander/miniforge-pypy3/envs/test/lib/libicui18n.so.75.1
7f1b76674000-7f1b76675000 rw-p 00386000 fd:02 548748904                  /home/alexander/miniforge-pypy3/envs/test/lib/libicui18n.so.75.1
7f1b76675000-7f1b76676000 rw-p 00000000 00:00 0
7f1b76676000-7f1b76678000 r--p 00000000 fd:02 420358663                  /home/alexander/miniforge-pypy3/envs/test/lib/libnsl.so.3.0.0
7f1b76678000-7f1b7667a000 r-xp 00002000 fd:02 420358663                  /home/alexander/miniforge-pypy3/envs/test/lib/libnsl.so.3.0.0
7f1b7667a000-7f1b7667b000 r--p 00004000 fd:02 420358663                  /home/alexander/miniforge-pypy3/envs/test/lib/libnsl.so.3.0.0
7f1b7667b000-7f1b7667c000 r--p 00005000 fd:02 420358663                  /home/alexander/miniforge-pypy3/envs/test/lib/libnsl.so.3.0.0
7f1b7667c000-7f1b7667d000 rw-p 00006000 fd:02 420358663                  /home/alexander/miniforge-pypy3/envs/test/lib/libnsl.so.3.0.0
7f1b7667d000-7f1b7667e000 r--p 00000000 fd:02 944107603                  /home/alexander/miniforge-pypy3/envs/test/lib/libsharpyuv.so.0.1.1
7f1b7667e000-7f1b76686000 r-xp 00001000 fd:02 944107603                  /home/alexander/miniforge-pypy3/envs/test/lib/libsharpyuv.so.0.1.1
7f1b76686000-7f1b76687000 r--p 00009000 fd:02 944107603                  /home/alexander/miniforge-pypy3/envs/test/lib/libsharpyuv.so.0.1.1
7f1b76687000-7f1b76688000 r--p 00009000 fd:02 944107603                  /home/alexander/miniforge-pypy3/envs/test/lib/libsharpyuv.so.0.1.1
7f1b76688000-7f1b76689000 rw-p 0000a000 fd:02 944107603                  /home/alexander/miniforge-pypy3/envs/test/lib/libsharpyuv.so.0.1.1
7f1b76689000-7f1b7668a000 rw-p 00000000 00:00 0
7f1b7668a000-7f1b7668e000 r--p 00000000 fd:02 80963260                   /home/alexander/miniforge-pypy3/envs/test/lib/libsnappy.so.1.2.1
7f1b7668e000-7f1b76695000 r-xp 00004000 fd:02 80963260                   /home/alexander/miniforge-pypy3/envs/test/lib/libsnappy.so.1.2.1
7f1b76695000-7f1b76697000 r--p 0000b000 fd:02 80963260                   /home/alexander/miniforge-pypy3/envs/test/lib/libsnappy.so.1.2.1
7f1b76697000-7f1b76698000 r--p 0000c000 fd:02 80963260                   /home/alexander/miniforge-pypy3/envs/test/lib/libsnappy.so.1.2.1
7f1b76698000-7f1b76699000 rw-p 0000d000 fd:02 80963260                   /home/alexander/miniforge-pypy3/envs/test/lib/libsnappy.so.1.2.1
7f1b76699000-7f1b7669c000 r--p 00000000 fd:02 548096037                  /home/alexander/miniforge-pypy3/envs/test/lib/liblzo2.so.2.0.0
7f1b7669c000-7f1b766c9000 r-xp 00003000 fd:02 548096037                  /home/alexander/miniforge-pypy3/envs/test/lib/liblzo2.so.2.0.0
7f1b766c9000-7f1b766cc000 r--p 00030000 fd:02 548096037                  /home/alexander/miniforge-pypy3/envs/test/lib/liblzo2.so.2.0.0
7f1b766cc000-7f1b766cd000 r--p 00033000 fd:02 548096037                  /home/alexander/miniforge-pypy3/envs/test/lib/liblzo2.so.2.0.0
7f1b766cd000-7f1b766ce000 rw-p 00034000 fd:02 548096037                  /home/alexander/miniforge-pypy3/envs/test/lib/liblzo2.so.2.0.0
7f1b766ce000-7f1b766e4000 r-xp 00000000 fd:00 41990716                   /usr/lib64/libresolv-2.17.so
7f1b766e4000-7f1b768e4000 ---p 00016000 fd:00 41990716                   /usr/lib64/libresolv-2.17.so
7f1b768e4000-7f1b768e5000 r--p 00016000 fd:00 41990716                   /usr/lib64/libresolv-2.17.so
7f1b768e5000-7f1b768e6000 rw-p 00017000 fd:00 41990716                   /usr/lib64/libresolv-2.17.so
7f1b768e6000-7f1b768e8000 rw-p 00000000 00:00 0
7f1b76908000-7f1b7690a000 r--p 00000000 fd:02 270851156                  /home/alexander/miniforge-pypy3/envs/test/lib/libkeyutils.so.1.9
7f1b7690a000-7f1b7690c000 r-xp 00002000 fd:02 270851156                  /home/alexander/miniforge-pypy3/envs/test/lib/libkeyutils.so.1.9
7f1b7690c000-7f1b7690d000 r--p 00004000 fd:02 270851156                  /home/alexander/miniforge-pypy3/envs/test/lib/libkeyutils.so.1.9
7f1b7690d000-7f1b7690e000 r--p 00004000 fd:02 270851156                  /home/alexander/miniforge-pypy3/envs/test/lib/libkeyutils.so.1.9
7f1b7690e000-7f1b7690f000 rw-p 00005000 fd:02 270851156                  /home/alexander/miniforge-pypy3/envs/test/lib/libkeyutils.so.1.9
7f1b7690f000-7f1b76913000 r--p 00000000 fd:02 478623246                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5support.so.0.1
7f1b76913000-7f1b76919000 r-xp 00004000 fd:02 478623246                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5support.so.0.1
7f1b76919000-7f1b7691b000 r--p 0000a000 fd:02 478623246                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5support.so.0.1
7f1b7691b000-7f1b7691c000 r--p 0000c000 fd:02 478623246                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5support.so.0.1
7f1b7691c000-7f1b7691d000 rw-p 0000d000 fd:02 478623246                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5support.so.0.1
7f1b7691d000-7f1b7691f000 r--p 00000000 fd:02 478623234                  /home/alexander/miniforge-pypy3/envs/test/lib/libcom_err.so.3.0
7f1b7691f000-7f1b76920000 r-xp 00002000 fd:02 478623234                  /home/alexander/miniforge-pypy3/envs/test/lib/libcom_err.so.3.0
7f1b76920000-7f1b76921000 r--p 00003000 fd:02 478623234                  /home/alexander/miniforge-pypy3/envs/test/lib/libcom_err.so.3.0
7f1b76921000-7f1b76922000 r--p 00003000 fd:02 478623234                  /home/alexander/miniforge-pypy3/envs/test/lib/libcom_err.so.3.0
7f1b76922000-7f1b76923000 rw-p 00004000 fd:02 478623234                  /home/alexander/miniforge-pypy3/envs/test/lib/libcom_err.so.3.0
7f1b76923000-7f1b76929000 r--p 00000000 fd:02 478623243                  /home/alexander/miniforge-pypy3/envs/test/lib/libk5crypto.so.3.1
7f1b76929000-7f1b76934000 r-xp 00006000 fd:02 478623243                  /home/alexander/miniforge-pypy3/envs/test/lib/libk5crypto.so.3.1
7f1b76934000-7f1b76938000 r--p 00011000 fd:02 478623243                  /home/alexander/miniforge-pypy3/envs/test/lib/libk5crypto.so.3.1
7f1b76938000-7f1b7693a000 r--p 00014000 fd:02 478623243                  /home/alexander/miniforge-pypy3/envs/test/lib/libk5crypto.so.3.1
7f1b7693a000-7f1b7693b000 rw-p 00016000 fd:02 478623243                  /home/alexander/miniforge-pypy3/envs/test/lib/libk5crypto.so.3.1
7f1b7693b000-7f1b7695f000 r--p 00000000 fd:02 232499252                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5.so.3.3
7f1b7695f000-7f1b769b9000 r-xp 00024000 fd:02 232499252                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5.so.3.3
7f1b769b9000-7f1b76a01000 r--p 0007e000 fd:02 232499252                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5.so.3.3
7f1b76a01000-7f1b76a0f000 r--p 000c5000 fd:02 232499252                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5.so.3.3
7f1b76a0f000-7f1b76a11000 rw-p 000d3000 fd:02 232499252                  /home/alexander/miniforge-pypy3/envs/test/lib/libkrb5.so.3.3
7f1b76a11000-7f1b76a7d000 r--p 00000000 fd:02 548748894                  /home/alexander/miniforge-pypy3/envs/test/lib/libicuuc.so.75.1
7f1b76a7d000-7f1b76b7e000 r-xp 0006c000 fd:02 548748894                  /home/alexander/miniforge-pypy3/envs/test/lib/libicuuc.so.75.1
7f1b76b7e000-7f1b76c12000 r--p 0016d000 fd:02 548748894                  /home/alexander/miniforge-pypy3/envs/test/lib/libicuuc.so.75.1
7f1b76c12000-7f1b76c25000 r--p 00200000 fd:02 548748894                  /home/alexander/miniforge-pypy3/envs/test/lib/libicuuc.so.75.1
7f1b76c25000-7f1b76c26000 rw-p 00213000 fd:02 548748894                  /home/alexander/miniforge-pypy3/envs/test/lib/libicuuc.so.75.1
7f1b76c26000-7f1b76c28000 rw-p 00000000 00:00 0
7f1b76c28000-7f1b76c2a000 r--p 00000000 fd:02 80965711                   /home/alexander/miniforge-pypy3/envs/test/lib/libsz.so.2.0.1
7f1b76c2a000-7f1b76c31000 r-xp 00002000 fd:02 80965711                   /home/alexander/miniforge-pypy3/envs/test/lib/libsz.so.2.0.1
7f1b76c31000-7f1b76c33000 r--p 00009000 fd:02 80965711                   /home/alexander/miniforge-pypy3/envs/test/lib/libsz.so.2.0.1
7f1b76c33000-7f1b76c34000 r--p 0000a000 fd:02 80965711                   /home/alexander/miniforge-pypy3/envs/test/lib/libsz.so.2.0.1
7f1b76c34000-7f1b76c35000 rw-p 0000b000 fd:02 80965711                   /home/alexander/miniforge-pypy3/envs/test/lib/libsz.so.2.0.1
7f1b76c35000-7f1b76cfe000 r--p 00000000 fd:02 343384187                  /home/alexander/miniforge-pypy3/envs/test/lib/libgeos.so.3.13.1
7f1b76cfe000-7f1b76f0a000 r-xp 000c9000 fd:02 343384187                  /home/alexander/miniforge-pypy3/envs/test/lib/libgeos.so.3.13.1
7f1b76f0a000-7f1b76f84000 r--p 002d5000 fd:02 343384187                  /home/alexander/miniforge-pypy3/envs/test/lib/libgeos.so.3.13.1
7f1b76f84000-7f1b76f94000 r--p 0034f000 fd:02 343384187                  /home/alexander/miniforge-pypy3/envs/test/lib/libgeos.so.3.13.1
7f1b76f94000-7f1b76f95000 rw-p 0035f000 fd:02 343384187                  /home/alexander/miniforge-pypy3/envs/test/lib/libgeos.so.3.13.1
7f1b76f95000-7f1b76f98000 r--p 00000000 fd:02 178070565                  /home/alexander/miniforge-pypy3/envs/test/lib/libiconv.so.2.7.0
7f1b76f98000-7f1b76fad000 r-xp 00003000 fd:02 178070565                  /home/alexander/miniforge-pypy3/envs/test/lib/libiconv.so.2.7.0
7f1b76fad000-7f1b7707c000 r--p 00018000 fd:02 178070565                  /home/alexander/miniforge-pypy3/envs/test/lib/libiconv.so.2.7.0
7f1b7707c000-7f1b7707e000 r--p 000e6000 fd:02 178070565                  /home/alexander/miniforge-pypy3/envs/test/lib/libiconv.so.2.7.0
7f1b7707e000-7f1b7707f000 rw-p 000e8000 fd:02 178070565                  /home/alexander/miniforge-pypy3/envs/test/lib/libiconv.so.2.7.0
7f1b7707f000-7f1b77084000 r--p 00000000 fd:02 880964235                  /home/alexander/miniforge-pypy3/envs/test/lib/libjson-c.so.5.4.0
7f1b77084000-7f1b7708d000 r-xp 00005000 fd:02 880964235                  /home/alexander/miniforge-pypy3/envs/test/lib/libjson-c.so.5.4.0
7f1b7708d000-7f1b77091000 r--p 0000e000 fd:02 880964235                  /home/alexander/miniforge-pypy3/envs/test/lib/libjson-c.so.5.4.0
7f1b77091000-7f1b77092000 r--p 00011000 fd:02 880964235                  /home/alexander/miniforge-pypy3/envs/test/lib/libjson-c.so.5.4.0
7f1b77092000-7f1b77093000 rw-p 00012000 fd:02 880964235                  /home/alexander/miniforge-pypy3/envs/test/lib/libjson-c.so.5.4.0
7f1b77093000-7f1b77111000 r--p 00000000 fd:02 232875027                  /home/alexander/miniforge-pypy3/envs/test/lib/libproj.so.25.9.6.2
7f1b77111000-7f1b7740e000 r-xp 0007e000 fd:02 232875027                  /home/alexander/miniforge-pypy3/envs/test/lib/libproj.so.25.9.6.2
7f1b7740e000-7f1b774b7000 r--p 0037b000 fd:02 232875027                  /home/alexander/miniforge-pypy3/envs/test/lib/libproj.so.25.9.6.2
7f1b774b7000-7f1b774d4000 r--p 00423000 fd:02 232875027                  /home/alexander/miniforge-pypy3/envs/test/lib/libproj.so.25.9.6.2
7f1b774d4000-7f1b774d5000 rw-p 00440000 fd:02 232875027                  /home/alexander/miniforge-pypy3/envs/test/lib/libproj.so.25.9.6.2
7f1b774d5000-7f1b774d8000 rw-p 00000000 00:00 0
7f1b774d8000-7f1b774dc000 r--p 00000000 fd:02 944108580                  /home/alexander/miniforge-pypy3/envs/test/lib/libexpat.so.1.10.1
7f1b774dc000-7f1b774f8000 r-xp 00004000 fd:02 944108580                  /home/alexander/miniforge-pypy3/envs/test/lib/libexpat.so.1.10.1
7f1b774f8000-7f1b77500000 r--p 00020000 fd:02 944108580                  /home/alexander/miniforge-pypy3/envs/test/lib/libexpat.so.1.10.1
7f1b77500000-7f1b77502000 r--p 00028000 fd:02 944108580                  /home/alexander/miniforge-pypy3/envs/test/lib/libexpat.so.1.10.1
7f1b77502000-7f1b77503000 rw-p 0002a000 fd:02 944108580                  /home/alexander/miniforge-pypy3/envs/test/lib/libexpat.so.1.10.1
7f1b77503000-7f1b77528000 r--p 00000000 fd:02 178071101                  /home/alexander/miniforge-pypy3/envs/test/lib/libspatialite.so.8.1.0
7f1b77528000-7f1b7799c000 r-xp 00025000 fd:02 178071101                  /home/alexander/miniforge-pypy3/envs/test/lib/libspatialite.so.8.1.0
7f1b7799c000-7f1b77ca4000 r--p 00499000 fd:02 178071101                  /home/alexander/miniforge-pypy3/envs/test/lib/libspatialite.so.8.1.0
7f1b77ca4000-7f1b77ca8000 r--p 007a1000 fd:02 178071101                  /home/alexander/miniforge-pypy3/envs/test/lib/libspatialite.so.8.1.0
7f1b77ca8000-7f1b77caa000 rw-p 007a5000 fd:02 178071101                  /home/alexander/miniforge-pypy3/envs/test/lib/libspatialite.so.8.1.0
7f1b77caa000-7f1b77cab000 rw-p 00000000 00:00 0
7f1b77cab000-7f1b77cae000 r--p 00000000 fd:02 9260582                    /home/alexander/miniforge-pypy3/envs/test/lib/libpcre2-8.so.0.14.0
7f1b77cae000-7f1b77d2f000 r-xp 00003000 fd:02 9260582                    /home/alexander/miniforge-pypy3/envs/test/lib/libpcre2-8.so.0.14.0
7f1b77d2f000-7f1b77d5f000 r--p 00084000 fd:02 9260582                    /home/alexander/miniforge-pypy3/envs/test/lib/libpcre2-8.so.0.14.0
7f1b77d5f000-7f1b77d60000 r--p 000b3000 fd:02 9260582                    /home/alexander/miniforge-pypy3/envs/test/lib/libpcre2-8.so.0.14.0
7f1b77d60000-7f1b77d61000 rw-p 000b4000 fd:02 9260582                    /home/alexander/miniforge-pypy3/envs/test/lib/libpcre2-8.so.0.14.0
7f1b77d61000-7f1b77d6f000 r--p 00000000 fd:02 272903411                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlengine.so.1.3.0
7f1b77d6f000-7f1b77d95000 r-xp 0000e000 fd:02 272903411                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlengine.so.1.3.0
7f1b77d95000-7f1b77d9d000 r--p 00034000 fd:02 272903411                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlengine.so.1.3.0
7f1b77d9d000-7f1b77d9f000 r--p 0003b000 fd:02 272903411                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlengine.so.1.3.0
7f1b77d9f000-7f1b77da0000 rw-p 0003d000 fd:02 272903411                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlengine.so.1.3.0
7f1b77da0000-7f1b77dd3000 r--p 00000000 fd:02 272903410                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmldom.so.1.3.0
7f1b77dd3000-7f1b77e32000 r-xp 00033000 fd:02 272903410                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmldom.so.1.3.0
7f1b77e32000-7f1b77e50000 r--p 00092000 fd:02 272903410                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmldom.so.1.3.0
7f1b77e50000-7f1b77e57000 r--p 000af000 fd:02 272903410                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmldom.so.1.3.0
7f1b77e57000-7f1b77e59000 rw-p 000b6000 fd:02 272903410                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmldom.so.1.3.0
7f1b77e59000-7f1b77e62000 r--p 00000000 fd:02 272903417                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlbase.so.1.3.0
7f1b77e62000-7f1b77e77000 r-xp 00009000 fd:02 272903417                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlbase.so.1.3.0
7f1b77e77000-7f1b77e7c000 r--p 0001e000 fd:02 272903417                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlbase.so.1.3.0
7f1b77e7c000-7f1b77e7d000 r--p 00022000 fd:02 272903417                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlbase.so.1.3.0
7f1b77e7d000-7f1b77e7e000 rw-p 00023000 fd:02 272903417                  /home/alexander/miniforge-pypy3/envs/test/lib/libkmlbase.so.1.3.0
7f1b77e7e000-7f1b77e80000 r--p 00000000 fd:02 548749489                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_threads.so.0.11.1
7f1b77e80000-7f1b77e82000 r-xp 00002000 fd:02 548749489                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_threads.so.0.11.1
7f1b77e82000-7f1b77e83000 r--p 00004000 fd:02 548749489                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_threads.so.0.11.1
7f1b77e83000-7f1b77e84000 r--p 00004000 fd:02 548749489                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_threads.so.0.11.1
7f1b77e84000-7f1b77e85000 rw-p 00005000 fd:02 548749489                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl_threads.so.0.11.1
7f1b77e85000-7f1b77e99000 r--p 00000000 fd:02 478622885                  /home/alexander/miniforge-pypy3/envs/test/lib/libsqlite3.so.3.50.1
7f1b77e99000-7f1b77fbe000 r-xp 00014000 fd:02 478622885                  /home/alexander/miniforge-pypy3/envs/test/lib/libsqlite3.so.3.50.1
7f1b77fbe000-7f1b77ffa000 r--p 00139000 fd:02 478622885                  /home/alexander/miniforge-pypy3/envs/test/lib/libsqlite3.so.3.50.1
7f1b77ffa000-7f1b77ffe000 r--p 00175000 fd:02 478622885                  /home/alexander/miniforge-pypy3/envs/test/lib/libsqlite3.so.3.50.1
7f1b77ffe000-7f1b78003000 rw-p 00179000 fd:02 478622885                  /home/alexander/miniforge-pypy3/envs/test/lib/libsqlite3.so.3.50.1
7f1b78003000-7f1b78006000 r--p 00000000 fd:02 341613127                  /home/alexander/miniforge-pypy3/envs/test/lib/libgif.so.7.2.0
7f1b78006000-7f1b7800d000 r-xp 00003000 fd:02 341613127                  /home/alexander/miniforge-pypy3/envs/test/lib/libgif.so.7.2.0
7f1b7800d000-7f1b7800f000 r--p 0000a000 fd:02 341613127                  /home/alexander/miniforge-pypy3/envs/test/lib/libgif.so.7.2.0
7f1b7800f000-7f1b78010000 r--p 0000c000 fd:02 341613127                  /home/alexander/miniforge-pypy3/envs/test/lib/libgif.so.7.2.0
7f1b78010000-7f1b78011000 rw-p 0000d000 fd:02 341613127                  /home/alexander/miniforge-pypy3/envs/test/lib/libgif.so.7.2.0
7f1b78011000-7f1b78018000 r--p 00000000 fd:02 609695941                  /home/alexander/miniforge-pypy3/envs/test/lib/libpng16.so.16.49.0
7f1b78018000-7f1b78041000 r-xp 00007000 fd:02 609695941                  /home/alexander/miniforge-pypy3/envs/test/lib/libpng16.so.16.49.0
7f1b78041000-7f1b7804c000 r--p 00030000 fd:02 609695941                  /home/alexander/miniforge-pypy3/envs/test/lib/libpng16.so.16.49.0
7f1b7804c000-7f1b7804d000 r--p 0003b000 fd:02 609695941                  /home/alexander/miniforge-pypy3/envs/test/lib/libpng16.so.16.49.0
7f1b7804d000-7f1b7804e000 rw-p 0003c000 fd:02 609695941                  /home/alexander/miniforge-pypy3/envs/test/lib/libpng16.so.16.49.0
7f1b7804e000-7f1b78060000 r--p 00000000 fd:02 1030827068                 /home/alexander/miniforge-pypy3/envs/test/lib/libmuparser.so.2.3.5
7f1b78060000-7f1b780bc000 r-xp 00012000 fd:02 1030827068                 /home/alexander/miniforge-pypy3/envs/test/lib/libmuparser.so.2.3.5
7f1b780bc000-7f1b780d2000 r--p 0006e000 fd:02 1030827068                 /home/alexander/miniforge-pypy3/envs/test/lib/libmuparser.so.2.3.5
7f1b780d2000-7f1b780d4000 r--p 00083000 fd:02 1030827068                 /home/alexander/miniforge-pypy3/envs/test/lib/libmuparser.so.2.3.5
7f1b780d4000-7f1b780d5000 rw-p 00085000 fd:02 1030827068                 /home/alexander/miniforge-pypy3/envs/test/lib/libmuparser.so.2.3.5
7f1b780d5000-7f1b780d8000 rw-p 00000000 00:00 0
7f1b780d8000-7f1b780e6000 r--p 00000000 fd:02 548749495                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl.so.0.11.1
7f1b780e6000-7f1b78459000 r-xp 0000e000 fd:02 548749495                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl.so.0.11.1
7f1b78459000-7f1b7848a000 r--p 00381000 fd:02 548749495                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl.so.0.11.1
7f1b7848a000-7f1b78490000 r--p 003b2000 fd:02 548749495                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl.so.0.11.1
7f1b78490000-7f1b78491000 rw-p 003b8000 fd:02 548749495                  /home/alexander/miniforge-pypy3/envs/test/lib/libjxl.so.0.11.1
7f1b78491000-7f1b78493000 rw-p 00000000 00:00 0
7f1b78493000-7f1b785b0000 r--p 00000000 fd:02 232285494                  /home/alexander/miniforge-pypy3/envs/test/lib/libxerces-c-3.2.so
7f1b785b0000-7f1b7872c000 r-xp 0011d000 fd:02 232285494                  /home/alexander/miniforge-pypy3/envs/test/lib/libxerces-c-3.2.so
7f1b7872c000-7f1b787f2000 r--p 00299000 fd:02 232285494                  /home/alexander/miniforge-pypy3/envs/test/lib/libxerces-c-3.2.so
7f1b787f2000-7f1b7880a000 r--p 0035f000 fd:02 232285494                  /home/alexander/miniforge-pypy3/envs/test/lib/libxerces-c-3.2.so
7f1b7880a000-7f1b7882c000 rw-p 00377000 fd:02 232285494                  /home/alexander/miniforge-pypy3/envs/test/lib/libxerces-c-3.2.so
7f1b7882c000-7f1b7883a000 r--p 00000000 fd:02 745994797                  /home/alexander/miniforge-pypy3/envs/test/lib/libLerc.so.4
7f1b7883a000-7f1b788ed000 r-xp 0000e000 fd:02 745994797                  /home/alexander/miniforge-pypy3/envs/test/lib/libLerc.so.4
7f1b788ed000-7f1b788f8000 r--p 000c1000 fd:02 745994797                  /home/alexander/miniforge-pypy3/envs/test/lib/libLerc.so.4
7f1b788f8000-7f1b788f9000 r--p 000cc000 fd:02 745994797                  /home/alexander/miniforge-pypy3/envs/test/lib/libLerc.so.4
7f1b788f9000-7f1b788fa000 rw-p 000cd000 fd:02 745994797                  /home/alexander/miniforge-pypy3/envs/test/lib/libLerc.so.4
7f1b788fa000-7f1b788fd000 r--p 00000000 fd:02 944107602                  /home/alexander/miniforge-pypy3/envs/test/lib/libwebp.so.7.1.10
7f1b788fd000-7f1b78995000 r-xp 00003000 fd:02 944107602                  /home/alexander/miniforge-pypy3/envs/test/lib/libwebp.so.7.1.10
7f1b78995000-7f1b789a9000 r--p 0009b000 fd:02 944107602                  /home/alexander/miniforge-pypy3/envs/test/lib/libwebp.so.7.1.10
7f1b789a9000-7f1b789aa000 r--p 000ae000 fd:02 944107602                  /home/alexander/miniforge-pypy3/envs/test/lib/libwebp.so.7.1.10
7f1b789aa000-7f1b789ab000 rw-p 000af000 fd:02 944107602                  /home/alexander/miniforge-pypy3/envs/test/lib/libwebp.so.7.1.10
7f1b789ab000-7f1b789ac000 rw-p 00000000 00:00 0
7f1b789ac000-7f1b789b2000 r--p 00000000 fd:02 178070553                  /home/alexander/miniforge-pypy3/envs/test/lib/libjpeg.so.8.3.2
7f1b789b2000-7f1b78a48000 r-xp 00006000 fd:02 178070553                  /home/alexander/miniforge-pypy3/envs/test/lib/libjpeg.so.8.3.2
7f1b78a48000-7f1b78a71000 r--p 0009c000 fd:02 178070553                  /home/alexander/miniforge-pypy3/envs/test/lib/libjpeg.so.8.3.2
7f1b78a71000-7f1b78a72000 r--p 000c5000 fd:02 178070553                  /home/alexander/miniforge-pypy3/envs/test/lib/libjpeg.so.8.3.2
7f1b78a72000-7f1b78a73000 rw-p 000c6000 fd:02 178070553                  /home/alexander/miniforge-pypy3/envs/test/lib/libjpeg.so.8.3.2
7f1b78a73000-7f1b78a75000 r--p 00000000 fd:02 478622238                  /home/alexander/miniforge-pypy3/envs/test/lib/libblosc.so.1.21.6
7f1b78a75000-7f1b78a81000 r-xp 00002000 fd:02 478622238                  /home/alexander/miniforge-pypy3/envs/test/lib/libblosc.so.1.21.6
7f1b78a81000-7f1b78a83000 r--p 0000e000 fd:02 478622238                  /home/alexander/miniforge-pypy3/envs/test/lib/libblosc.so.1.21.6
7f1b78a83000-7f1b78a84000 r--p 00010000 fd:02 478622238                  /home/alexander/miniforge-pypy3/envs/test/lib/libblosc.so.1.21.6
7f1b78a84000-7f1b78a85000 rw-p 00011000 fd:02 478622238                  /home/alexander/miniforge-pypy3/envs/test/lib/libblosc.so.1.21.6
7f1b78a85000-7f1b78a88000 r--p 00000000 fd:02 272900660                  /home/alexander/miniforge-pypy3/envs/test/lib/liblz4.so.1.10.0
7f1b78a88000-7f1b78aae000 r-xp 00003000 fd:02 272900660                  /home/alexander/miniforge-pypy3/envs/test/lib/liblz4.so.1.10.0
7f1b78aae000-7f1b78ab1000 r--p 00029000 fd:02 272900660                  /home/alexander/miniforge-pypy3/envs/test/lib/liblz4.so.1.10.0
7f1b78ab1000-7f1b78ab2000 r--p 0002b000 fd:02 272900660                  /home/alexander/miniforge-pypy3/envs/test/lib/liblz4.so.1.10.0
7f1b78ab2000-7f1b78ab3000 rw-p 0002c000 fd:02 272900660                  /home/alexander/miniforge-pypy3/envs/test/lib/liblz4.so.1.10.0fish: Job 1, 'python3 pygmt_test.py' terminated by signal SIGABRT (Abort)

or free(): invalid next size (fast) with the same backtrace

pygmt.show_versions() output

PyGMT information:
  version: v0.16.0
System information:
  python: 3.13.5 | packaged by conda-forge | (main, Jun 16 2025, 08:27:50) [GCC 13.3.0]
  executable: /home/alexander/miniforge-pypy3/envs/test/bin/python3
  machine: Linux-3.10.0-1160.88.1.el7.x86_64-x86_64-with-glibc2.17
Dependency information:
  numpy: 2.3.0
  pandas: 2.3.0
  xarray: 2025.6.1
  packaging: 25.0
  contextily: None
  geopandas: None
  IPython: None
  pyarrow: None
  rioxarray: None
  gdal: None
  ghostscript: 10.04.0
GMT library information:
  version: 6.5.0
  padding: 2
  share dir: /home/alexander/miniforge-pypy3/envs/test/share/gmt
  plugin dir: /home/alexander/miniforge-pypy3/envs/test/lib/gmt/plugins
  library path: /home/alexander/miniforge-pypy3/envs/test/lib/libgmt.so
  cores: 48
  grid layout: rows
  image layout:
  binary version: 6.5.0

Both of these are on a Centos 7 system at work, because my own laptop doesn't print the backtrace (and I don't know how to make it do that)

Here's a more explicit example using ctypes

import ctypes as ctp
import numpy

# l = [0]*1_000_000

lib = ctp.CDLL('/home/intern/Alexander/micromamba/envs/test_3/lib/libgmt.so')

create_session = lib['GMT_Create_Session']
create_session.argtypes=[ctp.c_char_p, ctp.c_uint, ctp.c_uint, ctp.c_void_p]
create_session.restype=ctp.c_void_p

destroy_session = lib['GMT_Destroy_Session']
destroy_session.argtypes=[ctp.c_void_p]

create_data = lib['GMT_Create_Data']
create_data.argtypes=[ctp.c_void_p, ctp.c_uint, ctp.c_uint, ctp.c_uint, ctp.POINTER(ctp.c_uint64),
                      ctp.POINTER(ctp.c_double), ctp.POINTER(ctp.c_double), ctp.c_uint, ctp.c_int, ctp.c_void_p]


API = create_session(b'test', 2, 0, None)
create_data(API, 6, 1, 0, (ctp.c_ulong * 3)(1, 1, 9), None, None, 0, 2, None)
destroy_session(API)


# import time
# time.sleep(1)

It doesn't crash when I comment out the import numpy line.
Uncommenting the commented out lines also sometimes changes the result.

The fftw stuff I was referring to is this line in gmt_memory_func:

tmp = fftwf_malloc (nelem * size);

which I believe is called (via gmt_M_memory_aligned when HAVE_FFTW3F is true) by this line in gmt_create_vector:

gmt/src/gmt_io.c

Line 9102 in 1ed5e1b

if (n_columns) V->data = gmt_M_memory_aligned (GMT, NULL, n_columns, union GMT_UNIVECTOR);

on the other hand, gmtlib_free_vector_ptr uses gmt_M_free

gmt/src/gmt_io.c

Line 9212 in 1ed5e1b

gmt_M_free (GMT, V->data); /* Sometimes we free a V that has nothing allocated so must check */

which always calls free

free (addr);

@joa-quim
Copy link
Member

Thank you for your effort but I still can't find a way to reproduce this from a pure CLI call. And am I interpreting wrong or the crash comes from python itself?

*** Error in `python3': double free or corruption (out): 0x0000558dfa2c5a80 ***

@joa-quim
Copy link
Member

I believe that your ctypes example is equivalent to this Julia calls, where all goes fine (but I do have HAVE_FFTW3F

julia> API = GMT.GMT_Create_Session("GMT", 2, GMT.GMT_SESSION_BITFLAGS)
Ptr{Nothing} @0x00000251d7336950

julia> GMT.GMT_Create_Data(API, 6, 1, 0, [1, 1, 9], C_NULL, C_NULL, 0, 2, C_NULL)
Ptr{Nothing} @0x00000251d730ff50

julia> GMT.GMT_Destroy_Session(API)

@gsitcia
Copy link
Contributor Author

gsitcia commented Jul 1, 2025

I found a way to reproduce the error with a gmt command.

This should be run in the same conda environment as before.

conda create -n test -c conda-forge pygmt=0.16.0=pyhd8ed1ab_0 liblapack=3.9.0=32_hc41d3b0_mkl
conda activate test
LD_PRELOAD=$CONDA_PREFIX/lib/libcblas.so.3 gmt grdfill -As @earth_relief_20m_holes.grd -Gout.grd

The issue for python is that when numpy is loaded before libgmt, numpy loads libcblas.so.3 which exports a version of fftw_malloc that uses MKL_malloc. (Only the mkl version of libcblas does this)

That said, I feel my patch is correct just on the basis that memory allocated with gmt_M_memory_aligned should be freed with gmt_M_free_aligned.

@joa-quim
Copy link
Member

joa-quim commented Jul 1, 2025

That said, I feel my patch is correct just on the basis that memory allocated with gmt_M_memory_aligned should be freed with gmt_M_free_aligned

I agree with this, but the problem with your patch is that always frees with gmt_M_free_aligned, even memory that was not not allocated with gmt_M_memory_aligned and I am very afraid of the consequences of that. Honestly, I'm surprised that tests passed because, for example on Windows, if you allocate inside gmt.dll and free inside the fftw dll fftwf_free it will certainly lead to a crash.

Is this restricted to Linux? I don't use Conda nor Python to further test this, @seisman ?

@seisman
Copy link
Member

seisman commented Jul 1, 2025

I can reproduce it under Linux, but not macOS.

@joa-quim
Copy link
Member

joa-quim commented Jul 1, 2025

OK, I think I have to revise my statement above. Did a more deep search and in fact gmtlib_free_vector_ptr() seems to only be called on pointers allocated by gmt_create_vector() that indeed uses gmt_M_memory_aligned. So freeing with gmt_M_free_aligned is the right thing to do. Still very puzzled why this does no cause any crashes on Windows, which is unforgivable on crashing when violating the cross dll boundaries. Let me wait to see if @seisman has something to add.

@joa-quim joa-quim merged commit 18e8e38 into GenericMappingTools:master Jul 3, 2025
10 of 13 checks passed
@welcome
Copy link

welcome bot commented Jul 3, 2025

🎉🎉🎉 Congrats on merging your first pull request and welcome to the team! 🎉🎉🎉

We hope that this was a good experience for you. Let us know if there is any way that the contributing process could be improved.

@joa-quim
Copy link
Member

joa-quim commented Jul 3, 2025

OK, I'm merging this.
Thanks for the dip researches.

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.

4 participants