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

[UHD Python API] Error in macOS 15.0: pointer being freed was not allocated #778

Closed
doctormin opened this issue Aug 2, 2024 · 27 comments
Closed

Comments

@doctormin
Copy link

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:

super(MultiUSRP, self).__init__(args)

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:
2024-08-02 at 14 53 02

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

  1. Prepare a host with macOS 15.0
  2. install miniforge
  3. mamba create -n <env_name>
  4. mamba activate <env_name>
  5. mamba install gnuradio
  6. Write a python script to evoke UHD API:
import uhd
import time
usrp = uhd.usrp.MultiUSRP()

This error will emerge:
2024-08-02 at 14 58 13

@doctormin doctormin changed the title Error in macOS15.0 : pointer being freed was not allocated Error in macOS 15.0 : pointer being freed was not allocated Aug 2, 2024
@doctormin doctormin changed the title Error in macOS 15.0 : pointer being freed was not allocated [UHD Python API] Error in macOS 15.0: pointer being freed was not allocated Aug 2, 2024
@rchmielarz
Copy link

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

@kgarrels
Copy link

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

@joergho
Copy link
Contributor

joergho commented Nov 29, 2024

Thanks, @doctormin , @rchmielarz , @kgarrels for reporting the issue.

For further analysis, could you please

  1. Update to the latest build of uhd in conda (just to be sure)
  2. provide the output of the following commands
    1. UHD_LOG_CONSOLE_LEVEL=debug uhd_find_devices
    2. UHD_LOG_CONSOLE_LEVEL=debug uhd_find_devices --args type=x3xx

@kgarrels
Copy link

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

@joergho
Copy link
Contributor

joergho commented Nov 29, 2024

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).

@kgarrels
Copy link

kgarrels commented Nov 29, 2024

would you expect different results than for gqrx?
#778 (comment)

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...

@joergho
Copy link
Contributor

joergho commented Nov 29, 2024

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.

@kgarrels
Copy link

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.

@kgarrels
Copy link

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!

@kgarrels
Copy link

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.

@michaelld
Copy link
Collaborator

michaelld commented Dec 1, 2024

@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

@michaelld
Copy link
Collaborator

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

@michaelld
Copy link
Collaborator

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

@michaelld
Copy link
Collaborator

FYI the basic UHD install in miniconda was really easy ... clearly there is some work to do on the Python API for macOS still ...

@doctormin
Copy link
Author

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] 

@doctormin
Copy link
Author

doctormin commented Dec 1, 2024

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
Copy link

kgarrels commented Dec 1, 2024

@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

@michaelld
Copy link
Collaborator

@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-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 @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!

@kgarrels
Copy link

kgarrels commented Dec 1, 2024

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

@michaelld
Copy link
Collaborator

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.

@kgarrels
Copy link

kgarrels commented Dec 2, 2024

I think conda/mamba are released, https://docs.conda.io/projects/conda/en/latest/

@michaelld
Copy link
Collaborator

michaelld commented Dec 3, 2024

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.

@joergho
Copy link
Contributor

joergho commented Dec 3, 2024

@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.

@doctormin
Copy link
Author

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

@joergho
Copy link
Contributor

joergho commented Dec 3, 2024

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: conda-forge/uhd-feedstock#59

@doctormin Would you mind copying your latest findings there?

@doctormin
Copy link
Author

Sure :)

@joergho
Copy link
Contributor

joergho commented Dec 9, 2024

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.

@joergho joergho closed this as completed Dec 12, 2024
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

No branches or pull requests

5 participants