norcal88andClaude Fable 5.1 0f8dbc2574 PlutoSDR: serialize sample thread lifecycle across buddies
stop() tore the sample thread down with stopWork() + delete and only then
cleared m_deviceShared.m_thread. The buddy's applySettings() suspends and
resumes that thread through m_thread from another thread, without holding
this device's mutex, so it could restart the thread between stopWork() and
delete (QThread: Destroyed while thread is still running -> qFatal/abort),
or call through the pointer after the delete. The device's own
applySettings() had the same exposure on its own thread pointer, since it
does not take m_mutex either.

Seen when the Satellite Tracker loads presets into the Rx and Tx device
sets of one Pluto at AOS: abort in PlutoSDRInputThread::~PlutoSDRInputThread
<- PlutoSDRInput::stop <- DSPDeviceSourceEngine::gotoIdle.

Add DevicePlutoSDRShared::m_threadsMutex (recursive, shared by all PlutoSDR
device sets) and take it in start() around startWork()/publish, in stop()
and handleError() around unpublish + teardown (unpublishing first), in
suspendBuddies()/resumeBuddies(), and for the whole suspend -> apply ->
resume sequence in applySettings(). Also wait() before deleting the thread
and check the own-thread pointer before resuming it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-02 21:28:38 -07:00
2026-09-27 17:15:43 -04:00
2024-07-10 23:06:38 +02:00
2026-09-07 13:10:37 +02:00
2024-08-03 11:05:12 +02:00
2026-08-19 20:28:39 +02:00
2026-09-15 17:42:50 +01:00
2026-08-19 20:28:39 +02:00
2023-05-02 19:43:59 +02:00
…

SDR Angel banner

SDRangel is an open-source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.

License : License Latest Release : GitHub release Source : Commits since last release Size Downloads : Github All Releases

Analysis : Coverity Scan Build Status Issues : open issues closed issues

Wiki: Most of the information and documentation related to SDRangel can be found in the Wiki. Please make sure to check it in case of questions or trouble and before you post issues on GitHub. You may also seek help from other users using the discussion group below. Before running the program, make sure you read at least the Home and Quick Start pages.

Discussion group: You can ask other users for help or discuss subjects related to SDRangel and its ancillary projects here.

Ancillary projects

  • SDRangelcli is a web application that can be used to control a headless (server flavor) instance of SDRangel. It can also be used as a remote control for the GUI flavor.
  • SDRangel-Docker is a collection of Docker files and scripts to facilitate building and running SDRangel in a Docker container. Works for either the GUI (only on a Linux host) or the server.
Languages
C++ 70.9%
JavaScript 26.1%
C 1.2%
CMake 0.9%
Python 0.3%
Other 0.5%