diff options
author | Lane Kolbly <lane.kolbly@ni.com> | 2021-10-07 15:20:54 -0500 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2021-10-11 10:43:46 -0700 |
commit | 7ba25a638eaa6e88696471df5ecd6af70e57d796 (patch) | |
tree | c09ac48d27a03736226f596d1225fcdde915a6ad /host/lib/version.cpp | |
parent | 0fa4f7179b952c51137177b191c67501051ade81 (diff) | |
download | uhd-7ba25a638eaa6e88696471df5ecd6af70e57d796.tar.gz uhd-7ba25a638eaa6e88696471df5ecd6af70e57d796.tar.bz2 uhd-7ba25a638eaa6e88696471df5ecd6af70e57d796.zip |
mpm: rfdc: Tear down RFDC on teardown
So, the Python garbage collector is a bit pernicious, in that it happens
behind the scenes in a way which is difficult to predict. The rfdc_ctrl
class expects that its "lifetime" will be a single live/die cycle of the
FPGA (i.e. that when a new FPGA is loaded, it will be destructed).
However, by default the Python GC will keep the X4xxRfdcCtrl class alive
for an arbitrary amount of time, meaning that it's possible that
multiple (C++) rfdc_ctrl classes can be alive at a single time.
When the GC reaps all of these classes, libmetal segfaults when we call
metal_finish several times in a row. This change works around that
issue, if not the overall GC issue, by explicitly deleting the rfdc_ctrl
object.
Diffstat (limited to 'host/lib/version.cpp')
0 files changed, 0 insertions, 0 deletions