uhd
uhd copied to clipboard
[UHD Python API] Error in macOS 15.0: pointer being freed was not allocated
Issue Description
I have been successfully using the UHD Python API with USRP devices on macOS. However, recently, after upgrading to the macOS 15.0 developer beta system, my UHD API returns an error when running the following line of code: https://github.com/EttusResearch/uhd/blob/a5ed1872be6d0fc36de9a7e0b508933da1f119bc/host/python/uhd/usrp/multi_usrp.py#L36
The error is as follows:
[INFO] [UHD] Mac OS; Clang version 16.0.6 ; Boost_108400; UHD_4.7.0.0-release
python(28956,0x1f0f218c0) malloc: *** error for object 0x1eee29cc0: pointer being freed was not allocated
python(28956,0x1f0f218c0) malloc: *** set a breakpoint in malloc_error_break to debug
Setup Details
Host OS: macOS 15.0 Python: 3.12.4 UHD: 4.7.0.0-release
ENV setup:
I used miniforge to install gnuradio from conda-forge, which automatically installs Python and UHD. For example, I am currently using the latest version:
Suspecting this bug might be related to the versions of Python and UHD, I tried the following:
mamba install gnuradio=3.10.7 (UHD=4.5.0.0, Python=3.11.9)
but encountered the same error.
Steps to reproduce the problem
- Prepare a host with macOS 15.0
- install miniforge
mamba create -n <env_name>mamba activate <env_name>mamba install gnuradio- Write a python script to evoke UHD API:
import uhd
import time
usrp = uhd.usrp.MultiUSRP()
This error will emerge:
I experience the same issue on MacOS 15.1:
Python 3.12.5 | packaged by conda-forge | (main, Aug 8 2024, 18:32:50) [Clang 16.0.6 ] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import uhd >>> import time >>> usrp = uhd.usrp.MultiUSRP() [INFO] [UHD] Mac OS; Clang version 16.0.6 ; Boost_108400; UHD_4.7.0.0-release python3(33938,0x1f3bd2c40) malloc: *** error for object 0x1f1ae9cc0: pointer being freed was not allocated python3(33938,0x1f3bd2c40) malloc: *** set a breakpoint in malloc_error_break to debug zsh: abort python3
Same issue here, macOS 15.1 Apple silicon, radioconda installation. Strange:
- when I build gqrx with cmake, it works fine, no crash
- when building with Xcode, this crash happens.
gqrx is here: https://github.com/gqrx-sdr/gqrx
Thanks, @doctormin , @rchmielarz , @kgarrels for reporting the issue.
For further analysis, could you please
- Update to the latest build of
uhdin conda (just to be sure) - provide the output of the following commands
UHD_LOG_CONSOLE_LEVEL=debug uhd_find_devicesUHD_LOG_CONSOLE_LEVEL=debug uhd_find_devices --args type=x3xx
mamba list uhd
# packages in environment at /Users/kai/radioconda:
#
# Name Version Build Channel
gnuradio-uhd 3.10.11.0 py310h2193f99_1 conda-forge
uhd 4.7.0.0 py310hd42cda6_0 conda-forge
UHD_LOG_CONSOLE_LEVEL=debug uhd_find_devices
[INFO] [UHD] Mac OS; Clang version 16.0.6 ; Boost_108400; UHD_4.7.0.0-release
[DEBUG] [MPMD] Discovering MPM devices on port 49600
[DEBUG] [MPMD] Discovering MPM devices on port 49600
No UHD Devices Found
UHD_LOG_CONSOLE_LEVEL=debug uhd_find_devices --args type=x3xx
No UHD Devices Found
python
Python 3.10.15 | packaged by conda-forge | (main, Oct 16 2024, 01:24:20) [Clang 17.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import uhd
>>> usrp = uhd.usrp.MultiUSRP()
[INFO] [UHD] Mac OS; Clang version 16.0.6 ; Boost_108400; UHD_4.7.0.0-release
python(6099,0x1f15e7840) malloc: *** error for object 0x1ef4c5cc0: pointer being freed was not allocated
python(6099,0x1f15e7840) malloc: *** set a breakpoint in malloc_error_break to debug
zsh: abort python
Interesting to see that the uhd_find_devices calls work. Now the question is if the error originates from the C implementation of multi_usrp itself or from the Python wrapping. Could you check if the C examples, e.g. rx_samples_to_file work? They are not part of the conda package and need to be compiled manually (or using homebrew).
would you expect different results than for gqrx? https://github.com/EttusResearch/uhd/issues/778#issuecomment-2501844003
In gqrx, uhd is called from gr-osmosdr, probably no python involved. Why does it crash with Xcode, and not with cmake?
I can try the example, needs some time...
would you expect different results than for gqrx?
If UHD is built as part of gqrx (I have not checked if it is) then you are right - then the assumption would be that the UHD examples (built using cmake) also work.
You mentioned that with Xcode it crashes. What do you mean? Did you build gqrx using Xcode? If this is the case then this would be an indication that somehow the build using Xcode is causing the problem. Then it would be interesting to see if the UHD examples built using Xcode show the issue.
Yes, build with Xcode --> crash when gqrx starts with the same errors as we see in the python example. build with cmake --> no crash, gqrx works fine.
I create the Xcode project with cmake -G Xcode .. , I found no difference in the cmake logs. Xcode is difficult to understand, to say the least :-)
It could well be that we have two different things - I was very surprised to see the python example delivers the same error messages.
I will try the examples, and send a picture of the Xcode behaviour.
libuhd is linked dynamically.
I did not manage to build the examples yet, but radioconda has them installed:
./rx_samples_to_file
Creating the usrp device with: ...
[INFO] [UHD] Mac OS; Clang version 16.0.6 ; Boost_108400; UHD_4.7.0.0-release
Error: LookupError: KeyError: No devices found for ----->
Empty Device Address
I connected my B200:
./rx_samples_to_file
Creating the usrp device with: ...
[INFO] [UHD] Mac OS; Clang version 16.0.6 ; Boost_108400; UHD_4.7.0.0-release
[INFO] [B200] Detected Device: B200
[INFO] [B200] Loading FPGA image: /Users/kai/radioconda/share/uhd/images/usrp_b200_fpga.bin...
[INFO] [B200] Operating over USB 2.
[INFO] [B200] Detecting internal GPSDO....
[INFO] [GPS] No GPSDO found
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed
[INFO] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [B200] Asking for clock rate 16.000000 MHz...
[INFO] [B200] Actually got clock rate 16.000000 MHz.
Using Device: Single USRP:
Device: B-Series Device
Mboard 0: B200
RX Channel: 0
RX DSP: 0
RX Dboard: A
RX Subdev: FE-RX2
TX Channel: 0
TX DSP: 0
TX Dboard: A
TX Subdev: FE-TX2
Setting RX Rate: 1.000000 Msps...
[INFO] [B200] Asking for clock rate 32.000000 MHz...
[INFO] [B200] Actually got clock rate 32.000000 MHz.
Actual RX Rate: 1.000000 Msps...
Setting RX Freq: 0.000000 MHz...
Setting RX LO Offset: 0.000000 MHz...
Actual RX Freq: 34.000000 MHz...
Locking LO on channel 0
Waiting for "lo_locked": ++++++++++ locked.
Press Ctrl + C to stop streaming...
^C
Done!
crash with Xcode:
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio 3.10.11.0
built-in source types: file rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya
rx_nb_cc :info: set_min_output_buffer on block 12 to 32768
Resampling audio 96000 -> 48000
BandPlanFile is /Users/kai/.config/gqrx/bandplan.csv
BookmarksFile is /Users/kai/.config/gqrx/bookmarks.csv
AddInstanceForFactory: No factory registered for id <CFUUID 0x600001f8a880> F8BB1C28-BAE8-11D6-9C31-00039315CD46
Number of audio input devices: 4
Number of audio output devices: 6
[0;32m[INFO] [UHD] [0;39mMac OS; Clang version 16.0.6 ; Boost_108400; UHD_4.7.0.0-release
gqrx(21948,0x170cbf000) malloc: *** error for object 0x1ef4c5cc0: pointer being freed was not allocated
gqrx(21948,0x170cbf000) malloc: *** set a breakpoint in malloc_error_break to debug
no crash with cmake:
./src/gqrx
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio 3.10.11.0
built-in source types: file rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya
rx_nb_cc :info: set_min_output_buffer on block 12 to 32768
Resampling audio 96000 -> 48000
BandPlanFile is /Users/kai/.config/gqrx/bandplan.csv
BookmarksFile is /Users/kai/.config/gqrx/bookmarks.csv
Number of audio input devices: 4
Number of audio output devices: 6
[INFO] [UHD] Mac OS; Clang version 16.0.6 ; Boost_108400; UHD_4.7.0.0-release
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio 3.10.11.0
built-in source types: file rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya
Using libairspyhf1.6.8, samplerates: 0.192M 0.228M 0.384M 0.456M 0.65M 0.768M 0.912M
Decimation: 4
stage: 1 ratio: 4
weird.
@kgarrels Hey Kai! Long time ... hope you're doing well. I finally got a demo working for a conference in a week (whew!) & am jumping to a few macOS issues of recent including this one.
For macOS 15.1.1 and current miniconda, can you list the versions like the author did above? IDK if that's helpful yet ... I've never used conda (any of them), so trying to come up to speed on it alongside Brew and MacPorts & also seeing if macOS provides enough dependencies to do a general build
Catching up here ... by default there is no "uhd" in miniconda ... one has to go to radioconda to find the SDR projects like UHD & GNU Radio & others
UHD installs a SO in the Python directory ... for me it is libpyuhd.cpython-312-darwin.so ... what does otool -L libpyuhd.cpython-312-darwin.so (or whatever the name is) return? For me I see some @rpath that likely won't work and the self-ID is wrong. I'm guessing this is what you'll see too: some build using @rpath and some do not ... those that do not are much more likely to work
FYI the basic UHD install in miniconda was really easy ... clearly there is some work to do on the Python API for macOS still ...
Hi, this issue persists in the latest version:
❯ mamba install gnuradio
Looking for: ['gnuradio']
conda-forge/osx-arm64 13.2MB @ 3.7MB/s 3.5s
conda-forge/noarch 17.5MB @ 4.4MB/s 4.0s
warning libmamba Invalid package cache, file '/Users/yiminzhao/.pyenv/versions/miniforge3-latest/pkgs/uhd-4.7.0.0-py312h11b8700_2/lib/python3.12/site-packages/uhd/usrp/libtypes.py' has incorrect size
Transaction
Prefix: /Users/yiminzhao/.pyenv/versions/miniforge3-latest/envs/latest
Updating specs:
- gnuradio
Package Version Build Channel Size
───────────────────────────────────────────────────────────────────────────────────────────
Install:
───────────────────────────────────────────────────────────────────────────────────────────
+ libusb 1.0.27 h93a5062_100 conda-forge Cached
+ libzlib 1.3.1 h8359307_2 conda-forge Cached
+ gstreamer-orc 0.4.40 hd74edd7_0 conda-forge Cached
+ libcxx 19.1.4 ha82da77_0 conda-forge Cached
+ icu 75.1 hfee45f7_0 conda-forge Cached
+ libogg 1.3.5 h99b78c6_0 conda-forge Cached
+ fribidi 1.0.10 h27ca646_0 conda-forge Cached
+ hicolor-icon-theme 0.17 hce30654_2 conda-forge Cached
+ libjpeg-turbo 3.0.0 hb547adb_1 conda-forge Cached
+ ca-certificates 2024.8.30 hf0a4a13_0 conda-forge Cached
+ xz 5.2.6 h57fd34a_0 conda-forge Cached
+ libffi 3.4.2 h3422bc3_5 conda-forge Cached
+ libiconv 1.17 h0d3ecfb_2 conda-forge Cached
+ epoxy 1.5.10 h1c322ee_1 conda-forge Cached
+ libopus 1.3.1 h27ca646_1 conda-forge Cached
+ python_abi 3.12 5_cp312 conda-forge Cached
+ libsodium 1.0.20 h99b78c6_0 conda-forge Cached
+ libcodec2 1.2.0 hd74edd7_2 conda-forge Cached
+ libdeflate 1.22 hd74edd7_0 conda-forge Cached
+ libwebp-base 1.4.0 h93a5062_0 conda-forge Cached
+ llvm-openmp 19.1.4 hdb05f8b_0 conda-forge Cached
+ ncurses 6.5 h7bae524_1 conda-forge Cached
+ yaml 0.2.5 h3422bc3_2 conda-forge Cached
+ bzip2 1.0.8 h99b78c6_7 conda-forge Cached
+ libexpat 2.6.4 h286801f_0 conda-forge Cached
+ pthread-stubs 0.4 hd74edd7_1002 conda-forge Cached
+ xorg-libxdmcp 1.1.5 hd74edd7_0 conda-forge Cached
+ xorg-libxau 1.0.11 hd74edd7_1 conda-forge Cached
+ lame 3.100 h1a8c8d9_1003 conda-forge Cached
+ libbrotlicommon 1.1.0 hd74edd7_2 conda-forge Cached
+ tk 8.6.13 h5083fa2_1 conda-forge Cached
+ libsqlite 3.47.0 hbaaea75_1 conda-forge Cached
+ zlib 1.3.1 h8359307_2 conda-forge Cached
+ libpng 1.6.44 hc14010f_0 conda-forge Cached
+ zstd 1.5.6 hb46c0d2_0 conda-forge Cached
+ mpg123 1.32.9 hf642e45_0 conda-forge Cached
+ qhull 2020.2 h420ef59_5 conda-forge Cached
+ lerc 4.0.0 h9a09cb3_0 conda-forge Cached
+ gmp 6.3.0 h7bae524_2 conda-forge Cached
+ libasprintf 0.22.5 h8414b35_3 conda-forge Cached
+ graphite2 1.3.13 hebf3989_1003 conda-forge Cached
+ pixman 0.43.4 hebf3989_0 conda-forge Cached
+ nspr 4.36 h5833ebf_0 conda-forge Cached
+ sdl2 2.30.7 hf9b8971_0 conda-forge Cached
+ volk 3.1.2 hebf3989_0 conda-forge Cached
+ portaudio 19.7.0 h5833ebf_0 conda-forge Cached
+ fmt 11.0.2 h420ef59_0 conda-forge Cached
+ libvorbis 1.3.7 h9f76cd9_0 conda-forge Cached
+ openssl 3.4.0 h39f12f2_0 conda-forge Cached
+ libintl 0.22.5 h8414b35_3 conda-forge Cached
+ libxml2 2.13.5 hbbdcc80_0 conda-forge Cached
+ libgfortran5 13.2.0 hf226fd6_3 conda-forge Cached
+ readline 8.2 h92ec313_1 conda-forge Cached
+ libedit 3.1.20191231 hc8eb9b7_2 conda-forge Cached
+ pcre2 10.44 h297a79d_2 conda-forge Cached
+ libxcb 1.17.0 hdb1d25a_0 conda-forge Cached
+ libbrotlienc 1.1.0 hd74edd7_2 conda-forge Cached
+ libbrotlidec 1.1.0 hd74edd7_2 conda-forge Cached
+ freetype 2.12.1 hadb7bae_2 conda-forge Cached
+ libboost 1.86.0 h29978a0_2 conda-forge Cached
+ libtiff 4.7.0 hfce79cd_1 conda-forge Cached
+ libasprintf-devel 0.22.5 h8414b35_3 conda-forge Cached
+ nss 3.107 hc555b47_0 conda-forge Cached
+ sdl 1.2.68 hfc12253_0 conda-forge Cached
+ spdlog 1.14.1 h6d8af72_1 conda-forge Cached
+ libevent 2.1.12 h2757513_1 conda-forge Cached
+ mysql-common 9.0.1 h0887d5e_2 conda-forge Cached
+ gettext-tools 0.22.5 h8414b35_3 conda-forge Cached
+ libgettextpo 0.22.5 h8414b35_3 conda-forge Cached
+ libintl-devel 0.22.5 h8414b35_3 conda-forge Cached
+ libxslt 1.1.39 h223e5b9_0 conda-forge Cached
+ libllvm19 19.1.4 hc4b4ae8_1 conda-forge 27MB
+ libllvm17 17.0.6 h5090b49_2 conda-forge Cached
+ libiio-c 0.26 h34e41b8_0 conda-forge Cached
+ libgfortran 5.0.0 13_2_0_hd922786_3 conda-forge Cached
+ krb5 1.21.3 h237132a_0 conda-forge Cached
+ libglib 2.82.2 h07bd6cf_0 conda-forge Cached
+ brotli-bin 1.1.0 hd74edd7_2 conda-forge Cached
+ fontconfig 2.15.0 h1383a14_1 conda-forge Cached
+ openjpeg 2.5.2 h9f1df11_0 conda-forge Cached
+ lcms2 2.16 ha0e7c42_0 conda-forge Cached
+ libthrift 0.21.0 h64651cc_0 conda-forge Cached
+ mysql-libs 9.0.1 he9bc4e1_2 conda-forge Cached
+ libgettextpo-devel 0.22.5 h8414b35_3 conda-forge Cached
+ libclang13 19.1.4 default_h81d93ff_0 conda-forge Cached
+ libclang-cpp17 17.0.6 default_h146c034_7 conda-forge Cached
+ libad9361-iio-c 0.3 ha39782d_0 conda-forge Cached
+ libopenblas 0.3.28 openmp_hf332438_1 conda-forge Cached
+ fftw 3.3.10 nompi_h6637ab6_110 conda-forge Cached
+ zeromq 4.3.5 hc1bb282_7 conda-forge Cached
+ libpq 16.6 h0224a88_0 conda-forge Cached
+ atk-1.0 2.38.0 hd03087b_2 conda-forge Cached
+ gdk-pixbuf 2.42.12 h7ddc832_0 conda-forge Cached
+ glib-tools 2.82.2 h25d4a46_0 conda-forge Cached
+ brotli 1.1.0 hd74edd7_2 conda-forge Cached
+ gettext 0.22.5 h8414b35_3 conda-forge Cached
+ libblas 3.9.0 25_osxarm64_openblas conda-forge Cached
+ libflac 1.4.3 hb765f3a_0 conda-forge Cached
+ libcblas 3.9.0 25_osxarm64_openblas conda-forge Cached
+ liblapack 3.9.0 25_osxarm64_openblas conda-forge Cached
+ libsndfile 1.2.2 h9739721_1 conda-forge Cached
+ gsl 2.7 h6e638da_0 conda-forge Cached
+ font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge Cached
+ pybind11-abi 4 hd8ed1ab_3 conda-forge Cached
+ font-ttf-inconsolata 3.000 h77eed37_0 conda-forge Cached
+ font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge Cached
+ font-ttf-ubuntu 0.83 h77eed37_3 conda-forge Cached
+ tzdata 2024b hc8b5060_0 conda-forge Cached
+ fonts-conda-forge 1 0 conda-forge Cached
+ fonts-conda-ecosystem 1 0 conda-forge Cached
+ python 3.12.7 h739c21a_0_cpython conda-forge Cached
+ cairo 1.18.0 hb4a6bf7_3 conda-forge Cached
+ libgirepository 1.82.0 h607895c_0 conda-forge Cached
+ harfbuzz 9.0.0 h997cde5_1 conda-forge Cached
+ pango 1.54.0 h9ee27a3_2 conda-forge Cached
+ librsvg 2.58.4 h40956f1_0 conda-forge Cached
+ gtk3 3.24.43 h7492e44_1 conda-forge Cached
+ wheel 0.45.1 pyhd8ed1ab_0 conda-forge Cached
+ setuptools 75.6.0 pyhff2d567_1 conda-forge 774kB
+ adwaita-icon-theme 47.0 unix_0 conda-forge Cached
+ pip 24.3.1 pyh8b19718_0 conda-forge Cached
+ pycparser 2.22 pyhd8ed1ab_0 conda-forge Cached
+ tomli 2.2.1 pyhd8ed1ab_0 conda-forge 19kB
+ ply 3.11 pyhd8ed1ab_2 conda-forge Cached
+ hyperframe 6.0.1 pyhd8ed1ab_0 conda-forge Cached
+ six 1.16.0 pyh6c4a22f_0 conda-forge Cached
+ hpack 4.0.0 pyh9f0ad1d_0 conda-forge Cached
+ pysocks 1.7.1 pyha2e5f31_6 conda-forge Cached
+ idna 3.10 pyhd8ed1ab_0 conda-forge Cached
+ charset-normalizer 3.4.0 pyhd8ed1ab_0 conda-forge Cached
+ munkres 1.1.4 pyh9f0ad1d_0 conda-forge Cached
+ pyparsing 3.2.0 pyhd8ed1ab_1 conda-forge Cached
+ cycler 0.12.1 pyhd8ed1ab_0 conda-forge Cached
+ certifi 2024.8.30 pyhd8ed1ab_0 conda-forge Cached
+ toml 0.10.2 pyhd8ed1ab_0 conda-forge Cached
+ zipp 3.21.0 pyhd8ed1ab_1 conda-forge 22kB
+ attrs 24.2.0 pyh71513ae_0 conda-forge Cached
+ pkgutil-resolve-name 1.3.10 pyhd8ed1ab_1 conda-forge Cached
+ packaging 24.2 pyhff2d567_1 conda-forge Cached
+ click 8.1.7 unix_pyh707e725_0 conda-forge Cached
+ python-dateutil 2.9.0.post0 pyhff2d567_0 conda-forge Cached
+ h2 4.1.0 pyhd8ed1ab_0 conda-forge Cached
+ importlib_resources 6.4.5 pyhd8ed1ab_0 conda-forge Cached
+ importlib-metadata 8.5.0 pyha770c72_0 conda-forge Cached
+ qtpy 2.4.2 pyhdecd6ff_0 conda-forge Cached
+ click-plugins 1.1.1 py_0 conda-forge Cached
+ qdarkstyle 3.2.3 pyhd8ed1ab_0 conda-forge Cached
+ brotli-python 1.1.0 py312hde4cb15_2 conda-forge Cached
+ unicodedata2 15.1.0 py312h0bf5046_1 conda-forge Cached
+ pyzmq 26.2.0 py312hf8a1cbd_3 conda-forge Cached
+ pillow 11.0.0 py312haf37ca6_0 conda-forge Cached
+ kiwisolver 1.4.7 py312h6142ec9_0 conda-forge Cached
+ pycairo 1.27.0 py312h798cee4_0 conda-forge Cached
+ ruamel.yaml.clib 0.2.8 py312h0bf5046_1 conda-forge Cached
+ rpds-py 0.21.0 py312hcd83bfe_0 conda-forge Cached
+ markupsafe 3.0.2 py312ha0ccf2a_0 conda-forge Cached
+ pyyaml 6.0.2 py312h024a12e_1 conda-forge Cached
+ lxml 5.3.0 py312ha59c1f6_2 conda-forge Cached
+ numpy 2.1.3 py312h94ee1e1_0 conda-forge Cached
+ soapysdr 0.8.1 py312h6142ec9_5 conda-forge Cached
+ cffi 1.17.1 py312h0fad829_0 conda-forge Cached
+ sip 6.8.6 py312hde4cb15_1 conda-forge Cached
+ glib 2.82.2 hb1db9eb_0 conda-forge Cached
+ fonttools 4.55.0 py312h998013c_0 conda-forge Cached
+ pygobject 3.50.0 py312hc4f7465_1 conda-forge Cached
+ ruamel.yaml 0.18.6 py312h0bf5046_1 conda-forge Cached
+ contourpy 1.3.1 py312hb23fbb9_0 conda-forge Cached
+ scipy 1.14.1 py312h20deb59_1 conda-forge Cached
+ gnuradio-pmt 3.10.11.0 py312h2d65830_5 conda-forge Cached
+ zstandard 0.23.0 py312h15fbf35_1 conda-forge Cached
+ pyqt5-sip 12.12.2 py312h9f69965_5 conda-forge Cached
+ gstreamer 1.24.7 hc3f5269_0 conda-forge Cached
+ matplotlib-base 3.9.2 py312h9bd0bc6_2 conda-forge Cached
+ gst-plugins-base 1.24.7 hb49d354_0 conda-forge Cached
+ qt-main 5.15.15 h7d33341_0 conda-forge Cached
+ pyqt 5.15.9 py312h550cae4_5 conda-forge Cached
+ qwt 6.3.0 h4ff56cd_0 conda-forge Cached
+ referencing 0.35.1 pyhd8ed1ab_0 conda-forge Cached
+ mako 1.3.6 pyhff2d567_0 conda-forge Cached
+ pyqtgraph 0.13.7 pyhd8ed1ab_0 conda-forge Cached
+ urllib3 2.2.3 pyhd8ed1ab_0 conda-forge Cached
+ jsonschema-specifications 2024.10.1 pyhd8ed1ab_0 conda-forge Cached
+ requests 2.32.3 pyhd8ed1ab_0 conda-forge Cached
+ jsonschema 4.23.0 pyhd8ed1ab_0 conda-forge Cached
+ gnuradio-core 3.10.11.0 py312h9c444a1_5 conda-forge Cached
+ uhd 4.7.0.0 py312h11b8700_2 conda-forge Cached
+ gnuradio-zeromq 3.10.11.0 py312h17788b2_5 conda-forge Cached
+ gnuradio-video-sdl 3.10.11.0 py312h14fb442_5 conda-forge Cached
+ gnuradio-soapy 3.10.11.0 py312h3cf95d6_5 conda-forge Cached
+ gnuradio-qtgui 3.10.11.0 py312hd34dc92_5 conda-forge Cached
+ gnuradio-iio 3.10.11.0 py312hc9ed232_5 conda-forge Cached
+ gnuradio-grc 3.10.11.0 py312h14fb442_5 conda-forge Cached
+ gnuradio-uhd 3.10.11.0 py312hbfa0caa_5 conda-forge Cached
+ gnuradio 3.10.11.0 py312h19d1795_5 conda-forge Cached
Summary:
Install: 194 packages
Total download: 28MB
───────────────────────────────────────────────────────────────────────────────────────────
Confirm changes: [Y/n]
Catching up here ... by default there is no "uhd" in miniconda ... one has to go to radioconda to find the SDR projects like UHD & GNU Radio & others
Hi Michael @michaelld, thank you for paying attention to this issue! By the way, the conda-forge channel does have gnuradio (https://anaconda.org/conda-forge/gnuradio) and uhd (https://anaconda.org/conda-forge/uhd), so one could use Miniforge (https://github.com/conda-forge/miniforge) and run mamba install gnuradio to install both GNURadio and the corresponding version of uhd. This method is straightforward, cross-platform and facilitates version management. I even wonder why this has not become the standard installation recommendation for GNURadio or UHD, as using MacPorts and other alternatives often leads to challenges such as difficulties in removal and the inability to coexist with multiple versions.
@kgarrels Hey Kai! Long time ... hope you're doing well. I finally got a demo working for a conference in a week (whew!) & am jumping to a few macOS issues of recent including this one.
Wow, nice to meet you again! All good here! What demo, which conference? Just curious :-) I met a lot of nice people during the EU gnuradio days in Darmstadt, very cool meeting...
For macOS 15.1.1 and current miniconda, can you list the versions like the author did above? IDK if that's helpful yet ... I've never used conda (any of them), so trying to come up to speed on it alongside Brew and MacPorts & also seeing if macOS provides enough dependencies to do a general build
I dropped macports some time ago, it seems gnuradio was not getting updates, maybe I just didn't understand it. Now using radiocoda, which is super easy to use. I never used homebrew.
The bug start after I upgraded macos 14.x to 15.1. It also occurred with gnuradio 3.10.10.0 and uhd 4.6.0.0 on macos 15.1.
I think we should forget the Xcode problem for now, that thing is just too complicated to understand.
otool:
otool -L /Users/kai/radioconda/lib/python3.10/site-packages/uhd/libpyuhd.cpython-310-darwin.so
/Users/kai/radioconda/lib/python3.10/site-packages/uhd/libpyuhd.cpython-310-darwin.so:
/Users/runner/miniforge3/conda-bld/uhd_1719620978768/work/host/python/lib/python3.10/site-packages/uhd/libpyuhd.cpython-310-darwin.so (compatibility version 0.0.0, current version 0.0.0)
@rpath/libuhd.4.7.0.dylib (compatibility version 4.7.0, current version 4.7.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.0.0)
@rpath/libc++.1.dylib (compatibility version 1.0.0, current version 1.0.0)
Here is my version listing:
mamba list
# packages in environment at /Users/kai/radioconda:
#
# Name Version Build Channel
adwaita-icon-theme 47.0 unix_0 conda-forge
airspy 1.0.10 h3422bc3_0 conda-forge
airspyhf 1.6.8 h3422bc3_0 conda-forge
appdirs 1.4.4 pyh9f0ad1d_0 conda-forge
archspec 0.2.3 pyhd8ed1ab_0 conda-forge
armadillo 14.2.0 h925db70_0 conda-forge
arpack 3.9.1 nompi_h593882a_101 conda-forge
asciimatics 1.15.0 pyhd8ed1ab_0 conda-forge
asttokens 2.4.1 pyhd8ed1ab_0 conda-forge
atk-1.0 2.38.0 hd03087b_2 conda-forge
attrs 24.2.0 pyh71513ae_0 conda-forge
bcrypt 4.2.1 py310hde4708a_0 conda-forge
bidict 0.23.1 pyhd8ed1ab_0 conda-forge
bladerf 2024.05 h99b78c6_0 conda-forge
blinker 1.9.0 pyhff2d567_0 conda-forge
boltons 24.0.0 pyhd8ed1ab_0 conda-forge
boost 1.84.0 h24597f5_6 conda-forge
brotli 1.1.0 hd74edd7_2 conda-forge
brotli-bin 1.1.0 hd74edd7_2 conda-forge
brotli-python 1.1.0 py310hb4ad77e_2 conda-forge
bzip2 1.0.8 h99b78c6_7 conda-forge
c-ares 1.34.3 h5505292_1 conda-forge
ca-certificates 2024.8.30 hf0a4a13_0 conda-forge
cached-property 1.5.2 hd8ed1ab_1 conda-forge
cached_property 1.5.2 pyha770c72_1 conda-forge
cairo 1.18.0 hb4a6bf7_3 conda-forge
certifi 2024.8.30 pyhd8ed1ab_0 conda-forge
cffi 1.17.1 py310h497396d_0 conda-forge
charset-normalizer 3.4.0 pyhd8ed1ab_0 conda-forge
click 8.1.7 unix_pyh707e725_0 conda-forge
click-plugins 1.1.1 py_0 conda-forge
cmake 3.31.1 h326f17c_0 conda-forge
codec2 1.0.3 h99b78c6_1 conda-forge
colorama 0.4.6 pyhd8ed1ab_0 conda-forge
conda 24.11.0 py310hbe9552e_0 conda-forge
conda-libmamba-solver 24.9.0 pyhd8ed1ab_0 conda-forge
conda-package-handling 2.4.0 pyh7900ff3_0 conda-forge
conda-package-streaming 0.11.0 pyhd8ed1ab_0 conda-forge
construct 2.10.70 pyhd8ed1ab_0 conda-forge
contourpy 1.3.1 py310h7f4e7e6_0 conda-forge
cryptography 44.0.0 py310h69cbf43_0 conda-forge
cycler 0.12.1 pyhd8ed1ab_0 conda-forge
decorator 5.1.1 pyhd8ed1ab_0 conda-forge
digital_rf 2.6.9 py310h998ccf3_2 conda-forge
distro 1.9.0 pyhd8ed1ab_0 conda-forge
docutils 0.21.2 pyhd8ed1ab_0 conda-forge
double-conversion 3.3.0 h13dd4ca_0 conda-forge
ephem 4.1.6 py310h493c2e1_0 conda-forge
epoxy 1.5.10 h1c322ee_1 conda-forge
exceptiongroup 1.2.2 pyhd8ed1ab_0 conda-forge
executing 2.1.0 pyhd8ed1ab_0 conda-forge
expat 2.6.4 h286801f_0 conda-forge
fftw 3.3.10 nompi_h6637ab6_110 conda-forge
flask 3.1.0 pyhff2d567_0 conda-forge
flask-socketio 5.4.1 pyh29332c3_0 conda-forge
fmt 10.2.1 h2ffa867_0 conda-forge
font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge
font-ttf-inconsolata 3.000 h77eed37_0 conda-forge
font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge
font-ttf-ubuntu 0.83 h77eed37_3 conda-forge
fontconfig 2.15.0 h1383a14_1 conda-forge
fonts-conda-ecosystem 1 0 conda-forge
fonts-conda-forge 1 0 conda-forge
fonttools 4.55.0 py310hc74094e_0 conda-forge
freetype 2.12.1 hadb7bae_2 conda-forge
fribidi 1.0.10 h27ca646_0 conda-forge
frozendict 2.4.6 py310hf9df320_0 conda-forge
fs 2.4.16 pyhd8ed1ab_0 conda-forge
future 1.0.0 pyhd8ed1ab_0 conda-forge
gdk-pixbuf 2.42.12 h7ddc832_0 conda-forge
gettext 0.22.5 h8414b35_3 conda-forge
gettext-tools 0.22.5 h8414b35_3 conda-forge
gevent 24.11.1 py310h1e56ef1_0 conda-forge
gevent-websocket 0.10.1 py_0 conda-forge
gflags 2.2.2 hf9b8971_1005 conda-forge
glew 2.1.0 h9f76cd9_2 conda-forge
glfw 3.4 h93a5062_0 conda-forge
glib 2.82.2 hb1db9eb_0 conda-forge
glib-tools 2.82.2 h25d4a46_0 conda-forge
glog 0.7.1 heb240a5_0 conda-forge
gmp 6.3.0 h7bae524_2 conda-forge
gnuradio 3.10.11.0 py310hc57154a_1 conda-forge
gnuradio-core 3.10.11.0 py310h32e79de_1 conda-forge
gnuradio-grc 3.10.11.0 py310h9ef2481_1 conda-forge
gnuradio-iio 3.10.11.0 py310h853d6a7_1 conda-forge
gnuradio-iqbalance 0.38.2 py310h22720d6_6 conda-forge
gnuradio-leo-data 1.0.0.post105+12a346f unix_0 ryanvolz
gnuradio-osmosdr 0.2.6 py310h744390e_3 conda-forge
gnuradio-pmt 3.10.11.0 py310h9924a28_1 conda-forge
gnuradio-qtgui 3.10.11.0 py310h70a3c68_1 conda-forge
gnuradio-soapy 3.10.11.0 py310h5c4e9a2_1 conda-forge
gnuradio-uhd 3.10.11.0 py310h2193f99_1 conda-forge
gnuradio-video-sdl 3.10.11.0 py310h9ef2481_1 conda-forge
gnuradio-zeromq 3.10.11.0 py310h0d605e3_1 conda-forge
graphite2 1.3.13 hebf3989_1003 conda-forge
greenlet 3.1.1 py310hb4ad77e_0 conda-forge
gsl 2.7 h6e638da_0 conda-forge
gst-plugins-base 1.24.7 hb49d354_0 conda-forge
gstreamer 1.24.7 hc3f5269_0 conda-forge
gstreamer-orc 0.4.40 hd74edd7_0 conda-forge
gtest 1.14.0 h420ef59_2 conda-forge
gtk3 3.24.43 h7492e44_1 conda-forge
h11 0.14.0 pyhd8ed1ab_0 conda-forge
h2 4.1.0 pyhd8ed1ab_0 conda-forge
h5py 3.12.1 nompi_py310h072ed46_102 conda-forge
hackrf 2024.02.1 hdaa6d3f_0 conda-forge
hamlib 4.5.5 h38ac543_5 conda-forge
hamlib-all 4.5.5 osx_5 conda-forge
hamlib-lua 4.5.5 lua54hd74edd7_5 conda-forge
hamlib-python 4.5.5 py310h493c2e1_5 conda-forge
hamlib-tcl 4.5.5 hb48aeca_5 conda-forge
harfbuzz 9.0.0 h997cde5_1 conda-forge
hdf5 1.14.3 nompi_ha698983_107 conda-forge
hicolor-icon-theme 0.17 hce30654_2 conda-forge
hpack 4.0.0 pyh9f0ad1d_0 conda-forge
hyperframe 6.0.1 pyhd8ed1ab_0 conda-forge
icu 75.1 hfee45f7_0 conda-forge
idna 3.10 pyhd8ed1ab_0 conda-forge
importlib-metadata 8.5.0 pyha770c72_0 conda-forge
importlib_resources 6.4.5 pyhd8ed1ab_0 conda-forge
inspectrum 0.3.1 h591b114_0 conda-forge
ipython 8.30.0 pyh707e725_0 conda-forge
itsdangerous 2.2.0 pyhd8ed1ab_0 conda-forge
jedi 0.19.2 pyhff2d567_0 conda-forge
jinja2 3.1.4 pyhd8ed1ab_0 conda-forge
jsonpatch 1.33 pyhd8ed1ab_0 conda-forge
jsonpointer 3.0.0 py310hbe9552e_1 conda-forge
jsonschema 4.23.0 pyhd8ed1ab_0 conda-forge
jsonschema-specifications 2024.10.1 pyhd8ed1ab_0 conda-forge
kiwisolver 1.4.7 py310h7306fd8_0 conda-forge
krb5 1.21.3 h237132a_0 conda-forge
lame 3.100 h1a8c8d9_1003 conda-forge
lcms2 2.16 ha0e7c42_0 conda-forge
lerc 4.0.0 h9a09cb3_0 conda-forge
libabseil 20240722.0 cxx17_hf9b8971_1 conda-forge
libad9361-iio 0.2 h5f0d74c_3 conda-forge
libad9361-iio-c 0.3 ha39782d_0 conda-forge
libaec 1.1.3 hebf3989_0 conda-forge
libairspy 1.0.10 h3422bc3_0 conda-forge
libairspyhf 1.6.8 h3422bc3_0 conda-forge
libarchive 3.7.7 h7c07d2a_0 conda-forge
libasprintf 0.22.5 h8414b35_3 conda-forge
libasprintf-devel 0.22.5 h8414b35_3 conda-forge
libbladerf-python 2024.05 py_0 conda-forge
libbladerf2 2024.05 h99b78c6_0 conda-forge
libblas 3.9.0 25_osxarm64_openblas conda-forge
libboost 1.84.0 h29978a0_6 conda-forge
libboost-devel 1.84.0 hf450f58_6 conda-forge
libboost-headers 1.84.0 hce30654_6 conda-forge
libboost-python 1.84.0 py310he5c2185_6 conda-forge
libboost-python-devel 1.84.0 py310h24597f5_6 conda-forge
libbrotlicommon 1.1.0 hd74edd7_2 conda-forge
libbrotlidec 1.1.0 hd74edd7_2 conda-forge
libbrotlienc 1.1.0 hd74edd7_2 conda-forge
libcblas 3.9.0 25_osxarm64_openblas conda-forge
libclang-cpp15 15.0.7 default_he012953_5 conda-forge
libclang-cpp16 16.0.6 default_h5c12605_13 conda-forge
libclang-cpp17 17.0.6 default_h146c034_7 conda-forge
libclang13 19.1.4 default_h81d93ff_0 conda-forge
libcodec2 1.0.3 h99b78c6_1 conda-forge
libcorrect 0.0.0 h1a8c8d9_0 conda-forge
libcurl 8.10.1 h13a7ad3_0 conda-forge
libcxx 19.1.4 ha82da77_0 conda-forge
libdeflate 1.21 h99b78c6_0 conda-forge
libedit 3.1.20191231 hc8eb9b7_2 conda-forge
libev 4.33 h93a5062_2 conda-forge
libevent 2.1.12 h2757513_1 conda-forge
libexpat 2.6.4 h286801f_0 conda-forge
libffi 3.4.2 h3422bc3_5 conda-forge
libflac 1.4.3 hb765f3a_0 conda-forge
libgettextpo 0.22.5 h8414b35_3 conda-forge
libgettextpo-devel 0.22.5 h8414b35_3 conda-forge
libgfortran 5.0.0 13_2_0_hd922786_3 conda-forge
libgfortran5 13.2.0 hf226fd6_3 conda-forge
libgirepository 1.82.0 h607895c_0 conda-forge
libglib 2.82.2 h07bd6cf_0 conda-forge
libhackrf0 2024.02.1 h93a5062_0 conda-forge
libhamlib4 4.5.5 hf9b8971_5 conda-forge
libiconv 1.17 h0d3ecfb_2 conda-forge
libiio 0.26 hce30654_0 conda-forge
libiio-c 0.26 h34e41b8_0 conda-forge
libintl 0.22.5 h8414b35_3 conda-forge
libintl-devel 0.22.5 h8414b35_3 conda-forge
libjpeg-turbo 3.0.0 hb547adb_1 conda-forge
liblapack 3.9.0 25_osxarm64_openblas conda-forge
liblimesuite 23.11.0 h965bd2d_0 conda-forge
libliquid1 1.6.0 h58f6a93_2 conda-forge
libllvm15 15.0.7 h2621b3d_4 conda-forge
libllvm16 16.0.6 haab561b_3 conda-forge
libllvm17 17.0.6 h5090b49_2 conda-forge
libllvm18 18.1.8 h5090b49_2 conda-forge
libllvm19 19.1.4 hc4b4ae8_1 conda-forge
libm2k 0.9.0 py310hbfa5715_0 conda-forge
libmamba 1.5.10 hbfbf5c4_0 conda-forge
libmambapy 1.5.10 py310h5564273_0 conda-forge
libmatio 1.5.28 he4ef330_0 conda-forge
libmirisdr4 2.0.0 h93a5062_0 conda-forge
libnghttp2 1.64.0 h6d7220d_0 conda-forge
libogg 1.3.5 h99b78c6_0 conda-forge
libopenblas 0.3.28 openmp_hf332438_1 conda-forge
libopus 1.3.1 h27ca646_1 conda-forge
libosmodsp0 0.4.0 h58f6a93_2 conda-forge
libpcap 1.10.4 hb547adb_1 conda-forge
libpng 1.6.44 hc14010f_0 conda-forge
libpq 16.6 h0224a88_0 conda-forge
libprotobuf 5.28.3 h8f0b736_0 conda-forge
librsvg 2.58.4 h40956f1_0 conda-forge
librtaudio6 5.2.0 hebf3989_3 conda-forge
libsndfile 1.2.2 h9739721_1 conda-forge
libsodium 1.0.20 h99b78c6_0 conda-forge
libsolv 0.7.30 h6c9b7f8_0 conda-forge
libsqlite 3.47.0 hbaaea75_1 conda-forge
libssh2 1.11.1 h9cc3647_0 conda-forge
libthrift 0.20.0 h64651cc_1 conda-forge
libtiff 4.6.0 hf8409c0_4 conda-forge
libusb 1.0.27 h93a5062_100 conda-forge
libuv 1.49.2 h7ab814d_0 conda-forge
libvorbis 1.3.7 h9f76cd9_0 conda-forge
libwebp-base 1.4.0 h93a5062_0 conda-forge
libxcb 1.17.0 hdb1d25a_0 conda-forge
libxml2 2.13.5 hbbdcc80_0 conda-forge
libxslt 1.1.39 h223e5b9_0 conda-forge
libzlib 1.3.1 h8359307_2 conda-forge
limesuite 23.11.0 h778206f_0 conda-forge
llvm-openmp 19.1.4 hdb05f8b_0 conda-forge
lua 5.4.6 hfd2a410_1 conda-forge
lxml 5.3.0 py310hed7ee58_2 conda-forge
lz4-c 1.9.4 hb7217d7_0 conda-forge
lzo 2.10 h93a5062_1001 conda-forge
m17-cxx-demod 2.3.3 h7e80bc5_4 conda-forge
mako 1.3.6 pyhff2d567_0 conda-forge
mamba 1.5.10 py310ha5d4528_0 conda-forge
markdown 3.6 pyhd8ed1ab_0 conda-forge
markupsafe 3.0.2 py310h5799be4_0 conda-forge
matplotlib 3.9.2 py310hb6292c7_2 conda-forge
matplotlib-base 3.9.2 py310h2a20ac7_2 conda-forge
matplotlib-inline 0.1.7 pyhd8ed1ab_0 conda-forge
menuinst 2.2.0 py310hbe9552e_0 conda-forge
mirisdr 2.0.0 h93a5062_0 conda-forge
mpg123 1.32.9 hf642e45_0 conda-forge
mplcursors 0.6 pyhd8ed1ab_0 conda-forge
munkres 1.1.4 pyh9f0ad1d_0 conda-forge
mysql-common 9.0.1 h0887d5e_2 conda-forge
mysql-libs 9.0.1 he9bc4e1_2 conda-forge
ncurses 6.5 h7bae524_1 conda-forge
nodejs 22.11.0 haa7c7e9_0 conda-forge
nspr 4.36 h5833ebf_0 conda-forge
nss 3.107 hc555b47_0 conda-forge
numexpr 2.10.2 py310h5e08031_0 conda-forge
numpy 2.1.3 py310h530be0a_0 conda-forge
openjpeg 2.5.2 h9f1df11_0 conda-forge
openssl 3.4.0 h39f12f2_0 conda-forge
packaging 24.2 pyhff2d567_1 conda-forge
pandas 2.2.3 py310hfd37619_1 conda-forge
pango 1.54.0 h9ee27a3_2 conda-forge
paramiko 3.5.0 pyhd8ed1ab_0 conda-forge
parso 0.8.4 pyhd8ed1ab_0 conda-forge
pcre2 10.44 h297a79d_2 conda-forge
pexpect 4.9.0 pyhd8ed1ab_0 conda-forge
pickleshare 0.7.5 py_1003 conda-forge
pillow 10.4.0 py310h383043f_1 conda-forge
pip 24.3.1 pyh8b19718_0 conda-forge
pixman 0.43.4 hebf3989_0 conda-forge
pkgutil-resolve-name 1.3.10 pyhd8ed1ab_1 conda-forge
platformdirs 4.3.6 pyhd8ed1ab_0 conda-forge
pluggy 1.5.0 pyhd8ed1ab_0 conda-forge
ply 3.11 pyhd8ed1ab_2 conda-forge
portaudio 19.6.0 h13dd4ca_9 conda-forge
prompt-toolkit 3.0.48 pyha770c72_0 conda-forge
pthread-stubs 0.4 hd74edd7_1002 conda-forge
ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge
pugixml 1.14 h13dd4ca_0 conda-forge
pure_eval 0.2.3 pyhd8ed1ab_0 conda-forge
pyadi-iio 0.0.18 pyhd8ed1ab_0 conda-forge
pybind11-abi 4 hd8ed1ab_3 conda-forge
pycairo 1.27.0 py310h706757e_0 conda-forge
pycosat 0.6.6 py310h078409c_2 conda-forge
pycparser 2.22 pyhd8ed1ab_0 conda-forge
pyfda 0.9.2 pyh9208f05_0 conda-forge
pyfiglet 0.8.post1 py_0 conda-forge
pygments 2.18.0 pyhd8ed1ab_0 conda-forge
pygobject 3.50.0 py310h75420b5_1 conda-forge
pylibiio 0.26 py_0 conda-forge
pynacl 1.5.0 py310h493c2e1_4 conda-forge
pyopengl 3.1.6 pyhd8ed1ab_1 conda-forge
pyparsing 3.2.0 pyhd8ed1ab_1 conda-forge
pyqt 5.15.9 py310h2924129_5 conda-forge
pyqt5-sip 12.12.2 py310h1253130_5 conda-forge
pyqtgraph 0.13.7 pyhd8ed1ab_0 conda-forge
pysocks 1.7.1 pyha2e5f31_6 conda-forge
python 3.10.15 hdce6c4c_2_cpython conda-forge
python-dateutil 2.9.0.post0 pyhff2d567_0 conda-forge
python-engineio 4.10.1 pyhff2d567_0 conda-forge
python-socketio 5.11.4 pyhd8ed1ab_0 conda-forge
python-tzdata 2024.2 pyhd8ed1ab_0 conda-forge
python_abi 3.10 5_cp310 conda-forge
pytz 2024.1 pyhd8ed1ab_0 conda-forge
pywin32-on-windows 0.1.0 pyh1179c8e_3 conda-forge
pyyaml 6.0.2 py310h493c2e1_1 conda-forge
pyzmq 26.2.0 py310h82ef58e_3 conda-forge
qdarkstyle 3.2.3 pyhd8ed1ab_0 conda-forge
qhull 2020.2 h420ef59_5 conda-forge
qt-main 5.15.15 h7d33341_0 conda-forge
qt6-main 6.7.2 h4682d5d_5 conda-forge
qtpy 2.4.2 pyhdecd6ff_0 conda-forge
qwt 6.3.0 h4ff56cd_0 conda-forge
readline 8.2 h92ec313_1 conda-forge
referencing 0.35.1 pyhd8ed1ab_0 conda-forge
reproc 14.2.5.post0 h5505292_0 conda-forge
reproc-cpp 14.2.5.post0 h286801f_0 conda-forge
requests 2.32.3 pyhd8ed1ab_0 conda-forge
rhash 1.4.5 h7ab814d_0 conda-forge
rpds-py 0.21.0 py310hde4708a_0 conda-forge
rtl-sdr 2.0.2 h99b78c6_0 conda-forge
ruamel.yaml 0.18.6 py310hf9df320_1 conda-forge
ruamel.yaml.clib 0.2.8 py310hf9df320_1 conda-forge
scipy 1.14.1 py310hc05a576_1 conda-forge
sdl 1.2.68 hfc12253_0 conda-forge
sdl2 2.30.7 hf9b8971_0 conda-forge
setuptools 75.6.0 pyhff2d567_1 conda-forge
simple-websocket 1.0.0 pyhd8ed1ab_1 conda-forge
sip 6.8.6 py310hb4ad77e_1 conda-forge
six 1.16.0 pyh6c4a22f_0 conda-forge
soapysdr 0.8.1 py310h7306fd8_5 conda-forge
soapysdr-module-airspy 0.2.0 h4306ade_0 conda-forge
soapysdr-module-airspyhf 0.2.0 h4306ade_0 conda-forge
soapysdr-module-audio 0.1.1 h70b5976_1 conda-forge
soapysdr-module-bladerf 0.4.1 h8167e30_0 conda-forge
soapysdr-module-hackrf 0.3.4 h4306ade_0 conda-forge
soapysdr-module-lms7 23.11.0 he20d445_0 conda-forge
soapysdr-module-netsdr 0.2.0 h370950c_1 conda-forge
soapysdr-module-plutosdr 0.2.2 hef1adc2_0 conda-forge
soapysdr-module-redpitaya 0.1.1 h370950c_0 conda-forge
soapysdr-module-remote 0.5.2 h4306ade_2 conda-forge
soapysdr-module-rtlsdr 0.3.3 h70b5976_2 conda-forge
soapysdr-module-uhd 0.4.1 h8180fdb_13 conda-forge
soapysdr-module-volk-converters 0.1.1 hd9aa7c5_2 conda-forge
spdlog 1.14.1 h9c441cc_0 conda-forge
stack_data 0.6.2 pyhd8ed1ab_0 conda-forge
superlu 5.2.2 hc615359_0 conda-forge
tk 8.6.13 h5083fa2_1 conda-forge
toml 0.10.2 pyhd8ed1ab_0 conda-forge
tomli 2.2.1 pyhd8ed1ab_0 conda-forge
tornado 6.4.2 py310h078409c_0 conda-forge
tqdm 4.67.1 pyhd8ed1ab_0 conda-forge
traitlets 5.14.3 pyhd8ed1ab_0 conda-forge
truststore 0.10.0 pyhd8ed1ab_0 conda-forge
typing_extensions 4.12.2 pyha770c72_0 conda-forge
tzdata 2024b hc8b5060_0 conda-forge
uhd 4.7.0.0 py310hd42cda6_0 conda-forge
unicodedata2 15.1.0 py310hf9df320_1 conda-forge
urllib3 2.2.3 pyhd8ed1ab_0 conda-forge
volk 3.1.2 hebf3989_0 conda-forge
volk-gnss-sdr 0.0.19 h5833ebf_3 conda-forge
watchdog 6.0.0 py310h078409c_0 conda-forge
wcwidth 0.2.13 pyhd8ed1ab_0 conda-forge
websocket-client 1.8.0 pyhd8ed1ab_0 conda-forge
werkzeug 3.1.3 pyhff2d567_0 conda-forge
wheel 0.45.1 pyhd8ed1ab_0 conda-forge
wsproto 1.2.0 pyhd8ed1ab_0 conda-forge
wxwidgets 3.2.6 hceea64a_0 conda-forge
xorg-libxau 1.0.11 hd74edd7_1 conda-forge
xorg-libxdmcp 1.1.5 hd74edd7_0 conda-forge
xz 5.2.6 h57fd34a_0 conda-forge
yaml 0.2.5 h3422bc3_2 conda-forge
yaml-cpp 0.8.0 h13dd4ca_0 conda-forge
zeromq 4.3.5 hc1bb282_7 conda-forge
zipp 3.21.0 pyhd8ed1ab_1 conda-forge
zlib 1.3.1 h8359307_2 conda-forge
zope.event 5.0 pyhd8ed1ab_1 conda-forge
zope.interface 7.2 py310h078409c_0 conda-forge
zstandard 0.23.0 py310h2665a74_1 conda-forge
zstd 1.5.6 hb46c0d2_0 conda-forge
@kgarrels I've never been to UE gnuradio days; would love to go some day. Ettus/NI/Emerson has folks in Germany & I think some of them go since they are much closer. I'm heading to AOC'24 Dec 9-13 to give the demos showing off the X440 phase coherence & 1.6 GHz IBW (2 GS/s). This demo was created a couple years ago & I've inherited it; had to reverse engineer lots of things on how it both works and is used. Glad to have success. with 1 week to go!
Hi Michael @michaelld, thank you for paying attention to this issue! By the way, the
conda-forgechannel does havegnuradio(https://anaconda.org/conda-forge/gnuradio) anduhd(https://anaconda.org/conda-forge/uhd), so one could use Miniforge (https://github.com/conda-forge/miniforge) and runmamba install gnuradioto install both GNURadio and the corresponding version ofuhd. This method is straightforward, cross-platform and facilitates version management. I even wonder why this has not become the standard installation recommendation for GNURadio or UHD, as using MacPorts and other alternatives often leads to challenges such as difficulties in removal and the inability to coexist with multiple versions.
@kgarrels @doctormin I have never used miniconda or miniforge;l trying the minimum of the former to be able to do debugging (I will also try MacPorts for diversity sake). I'm guessing the error I see if the same as y'all are seeing, regardless of how UHD was installed ... Python crashes when one issues "import uhd" with some sort of memory access issue. I ran "lldb python3.12", then "run", then "import uhd" and here's what I see:
(lldb) run
Process 66079 launched: '/Users/uhd/miniconda3/bin/python3.12' (arm64)
Python 3.12.7 | packaged by Anaconda, Inc. | (main, Oct 4 2024, 08:22:19) [Clang 14.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import uhd
Process 66079 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x68)
frame #0: 0x0000000101aee0b4 libpython3.12.dylib`take_gil + 92
libpython3.12.dylib`take_gil:
-> 0x101aee0b4 <+92>: ldr x8, [x9, #0x68]
0x101aee0b8 <+96>: mov w10, #0xd948 ; =55624
0x101aee0bc <+100>: movk w10, #0x5, lsl #16
0x101aee0c0 <+104>: ldr x20, [x9, x10]
Target 0: (python3.12) stopped.
... which is not hugely informative unfortunately without debugging symbols. I'd be curious if y'all see the same.
In the past (when I was active in MacPorts -- I've not been active for coming up 2 years, which is why the GNU Radio & related ports have not been updated very much) there were 2 primary issues to get UHD working with Python: (1) make sure the library dependencies daisy-chained correctly ... for example IIRC removing the Python library from the .SO being loaded because one is already in Python and trying to reload the library caused DYLD issues; (2) make sure the same libraries and includes -- both installed dependencies as well as system ones -- are from the same source ... for example sometimes CMake would use Apple Python headers but port libraries or vice versa, some sort of mix-and-match, which is never a good thing.
I wonder here whether the issue is that the Python is built using "Clang 14.0.6" whereas we're using "Clang 16.0.0" (or 16.0.6; doesn't really matter) for UHD. While the Clang libraries will be similar between versions, they will be different in subtle ways & those could be enough to throw things off.
Is there a way to force Python to be built from source in conda or mamba? That would be worth a try. Let' keep at it & eventually we'll figure this out!
2GS/s sounds like fun :-)
I think conda's packages are always pre-built, I could remove single packages and try to build them locally, but where to start, uhd? Then I would need some help...
What can we learn from the otool results?
The line /Users/runner/miniforge3/conda-bld/uhd_1719620978768/work/host/python/lib/python3.10... looks weird
yes 2 GS/s is fun! The X440 is a pretty amazing radio! Unless one uses bursts of data then it takes quite a beastly server to receive that data stream even on 1 channel ... the X440 supports 2 (either direction for either stream), which is even more fun. Next up will be adding in 1 or 2 GPUs to see if we can stream to them & then they do real-time processing on the data. Need some beefy GPUs!
I seem to remember reading about Conda/Samba that Apple Silicon support was experimental ... am i misremembering?
I'm using MacPorts to build everything from source & seeing if that install works. If that works I'll store those & change the install to be from pre-built binary.
otool is useful to some degree to make sure the binary (lib or so or exe) has the correct load settings (e.g., RPATH) and the dependencies all make sense. macOS is picky about some parts & not soo much about other parts in a binary.
I'm guessing the line you note is a local build directory (conda-bld), which happens sometimes when building an SO ... since it is the self-ID of the SO, it doesn't really matter anyway -- though it's nice to have it match the actual install location.
I think conda/mamba are released, https://docs.conda.io/projects/conda/en/latest/
In the issue Jörg notes on conda-forge, Ryan notes that his UHD feedstock is up to date & even rebuilt it just in case. Following the instructions provided I added this channel to my miniconda install & then installed UHD through it. This updated the Python 3..12 install & now the compilers match for Python and UHD (Clang 16.0.6), and "import uhd" works. This reinforces my belief that the issue is compiler mismatch. I also built UHD 4.7 release in MacPorts & it works fine all around. I don't know enough about conda/mamba/forge to tell people how to resolve this issue, but it's very unlikely to be an issue with UHD.
@doctormin @kgarrels As mentioned by @michaelld , there is a new build of uhd available in conda-forge (date: 12/03/2024) which is supposed to solve the issue. Please check and confirm.
Thanks! I've upgraded to the newest build of uhd from conda-forge.
mamba update --all
- uhd 4.7.0.0 py312h11b8700_2 conda-forge Cached
+ uhd 4.7.0.0 py312hcf98d66_3 conda-forge 5MB
Unfortunately, this issue persists.
[INFO] [UHD] Mac OS; Clang version 18.1.8 ; Boost_108600; UHD_4.7.0.0-release
python(4789,0x207010240) malloc: *** error for object 0x204be1cc0: pointer being freed was not allocated
python(4789,0x207010240) malloc: *** set a breakpoint in malloc_error_break to debug
[1] 4789 abort python usrp_setting.py
Unfortunately, this issue persists.
That's a pity. However, as we learned that this issue is conda-specific, I suggest to continue the discussion here: https://github.com/conda-forge/uhd-feedstock/issues/59
@doctormin Would you mind copying your latest findings there?
Sure :)
Update: @ryanvolz (the maintainer of the UHD package in conda) found a fix and generated a new UHD package which was successfully tested by @kgarrels. This means that this issue should be fixed.