Commit Graph
381 Commits
Author SHA1 Message Date
Robin Getz 953391c171 repo wide : Name SDRangel-owned threads for debugging
Assign descriptive names to SDRangel threads so thread activity can be
identified when investigating multi-threaded behavior, including crashes,
leaks, and synchronization issues in debuggers and others tools.

Use compact names to fit platform thread-name limits (14 chars) while
retaining the component and thread role where possible.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-09-26 20:26:27 -04:00
Edouard Griffiths 62ce6c7b88 Merge pull request #2955 from rgetz/rgetz-fix-message-queue-leaks
tree wide: Fix message ownership and reporting for unhandled queue messages
2026-09-27 00:56:58 +02:00
Robin Getz c2b30d4fa8 tree wide: Fix message ownership and reporting for unhandled queue messages
MessageQueue::pop() transfers ownership of the popped message to the
caller, but many handleInputMessages() implementations only deleted
the message when handleMessage() returned true. When a message was not
handled, ownership had already been transferred from the queue and the
message was leaked.

This was identified while investigating an ASAN leak in the audio
subsystem.

Update the applicable handleInputMessages() implementations to always
delete messages after handleMessage() returns. Unhandled messages are
also logged with the component and message identifier so unexpected
message routing is visible during debugging.

This change:
- Ensures every message popped from a queue has its ownership resolved.
- Prevents leaks when handleMessage() returns false.
- Makes unhandled messages visible instead of silently discarding them.
- Preserves the existing message handling logic and does not require
  components to handle message types that are legitimately irrelevant
  to them.

The changes are intentionally mechanical and limited to the common
message queue ownership and diagnostic pattern.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-09-25 23:49:05 -04:00
Jon Beniston c79a8fdf47 Fix frequency not being set on Nooelec dongles when first started. 2026-09-15 15:12:14 +01:00
Jon BenistonandClaude Opus 5 ddedd59568 Add MessageDialog and use it in place of the QMessageBox static functions
QMessageBox::information() and friends build the box on the stack, parent
it to the calling widget and run a nested event loop in exec(). If the
parent is closed while the box is open, which the Web API can do at any
time, the parent deletes the box and its children and the heap is
corrupted.

MessageDialog offers the same calls, but the box is heap allocated, given
Qt::WA_DeleteOnClose and shown rather than exec'd, so nothing runs a
nested event loop and the box owns its own lifetime. A box with the same
text as one already up is raised instead of a second being created.

The trade off is that information(), warning() and critical() return
immediately and cannot report which button was pressed. question() takes
a callback for the cases that need the answer.

Converts the call sites in the device, channel and feature GUIs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 17:16:49 +01:00
Jon BenistonandClaude Opus 5 60db861797 Fix QString leak in the web API settings and report formatters
The generated SWG setters overwrite the string pointer without deleting
what is already there, and every webapiSettingsGet and webapiReportGet
calls init() first, which has allocated one. Each call therefore leaked a
QString per string field. Measured at 117 bytes per settings GET for the
Satellite Tracker, over 20,000 requests.

Assign in place when the pointer is already set, which is what these same
functions have always done for title and reverseAPIAddress. 394 sites
across webapiFormatChannelSettings, webapiFormatDeviceSettings,
webapiFormatFeatureSettings and the three report equivalents.

The webapiReverseSend* functions are deliberately left alone: they build a
fresh SWG object whose constructor leaves the pointers null, so passing a
new QString is correct there.

After the change the same measurement is flat, at 7 bytes per GET.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 16:54:42 +01:00
f4exb 97e9e21fe9 Release v7.27.2 2026-08-19 20:28:39 +02:00
Robin Getz c170e03ddd rtl-sdr: Fix out-of-bounds tuner name lookup
Validate the tuner type index before accessing the tuner name table.
The previous check allowed an index equal to names.size(), which could
result in an out-of-range QStringList access.

Use a local integer value for the enum conversion and ensure only valid
indices are used when looking up tuner names.

pointed out by cppcheck: Access out of bounds

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-08-01 19:52:09 -04:00
Robin Getz edc4693448 rtl-sdr: Fix out-of-bounds access in gain selection
The gain change handler allowed an index equal to m_gains.size(),
which is outside the valid vector range. Reject invalid indices before
accessing the gain table to avoid undefined behavior.

found with cppcheck: Access out of bounds

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-08-01 19:40:15 -04:00
f4exb ef4357f26b Release 7.25.0 2026-05-04 06:00:17 +02:00
Tammo Jan Dijkema c86c178363 Use Qt6.2 compatible qt_add_plugin in CMake 2026-04-25 17:11:41 +02:00
f4exb c8389506e4 Release v7.23.1 2026-02-02 21:38:25 +01:00
f4exb 63348eeee1 Make device title editable in the basic device settings. Fixes #2292 2026-01-28 03:05:39 +01:00
f4exb b935db0228 Publish version 7.22.9 2025-09-28 21:27:43 +02:00
Jon Beniston f204c168f6 Add crash handler on Windows.
Add memory buffer to Logger, so last 500 log messages can be included in crash report.
Generate and include stripped pdb files so stack trace can include function names.
2025-07-31 16:35:44 +01:00
f4exb ae5dc866c7 Updated versions and changelogs 2024-11-09 18:46:38 +01:00
Jon Beniston 2538662c9b Fixes for Android 2024-10-21 17:11:55 +01:00
f4exb ed410d039a Updated versions and changelogs 2024-10-20 10:53:00 +02:00
srcejon 98aa40424d Fix lint warnings. 2024-10-15 09:21:08 +01:00
srcejon 5d1478d047 Formatting 2024-10-15 09:02:30 +01:00
srcejon 240c3d502e Formatting 2024-10-15 08:56:54 +01:00
srcejon 4ac29d2052 Remove debug. 2024-10-15 08:49:21 +01:00
srcejon acb278bbff RTLSDR: Apply driver settings in RTLSDRThread, to avoid blocking main thread. Add sync read for WebAssembly. 2024-10-15 08:40:08 +01:00
f4exb 8f2ac70621 Updated plugin versions 2024-10-06 10:53:38 +02:00
Edouard Griffiths f522d88fc5 Merge pull request #2252 from srcejon/freq_scanner
Update CMakeLists.txt to allow static libraries to be built
2024-09-13 21:07:04 +02:00
Edouard Griffiths d6773eafb3 Merge pull request #2245 from DreamNik/fix_warnings_and_android_issues
Fix warnings and android issues
2024-09-12 14:33:32 +02:00
srcejon 1df07b21ae Update CMakeLists.txt to allow static libraries to be built, as well as shared.
Add BUILD_BENCH, BUILD_SHARED_LIBS, ENABLE_AARONIARTSA and ENABLE_METIS options.
2024-09-11 20:16:40 +01:00
f4exb 37e06de0ed DeviceGUI: removed destroy method. Part of #2159 2024-09-07 21:50:42 +02:00
DreamNik 202fc96de6 Append prefix to plugin name when running on Android.
Android libraries can't be placed inside subdirectory, so to
distinguish plugins from regular libraries the new prefix is used.
2024-09-05 13:37:51 +03:00
f4exb beaf2932ba RTLSDR: make sure start and stop are effective once only. PArt of #2159 2024-08-27 09:54:09 +02:00
f4exb aec3c5ca47 Updated plugin versions 2024-08-13 22:35:18 +02:00
Daniele Forsi 4241f01376 Fix typos in cpp files 2024-07-10 23:06:38 +02:00
Simon Ruderich 3307000a72 plugins: fix non-matching <hx> tags in readme.md 2024-04-26 08:37:24 +02:00
Mykola Dvornik 15337cac66 Fix bug that prevents settings changes updates via reverse API
Most plugins that use reverse API to PATCH settings updates to remote
server only do so when `useReverseAPI` is toggled, but not when the
relevant settings are being updated. So lets fix the precondition to
use the `m_useReverseAPI` flag instead.
2024-04-14 18:58:12 +02:00
f4exb cdae5ca048 Updated versions and changelogs 2024-04-14 11:41:00 +02:00
Daniele Forsi 8c3f7e3775 Remove unused includes and use more direct includes 2024-04-11 23:31:34 +02:00
f4exb 5dcf7f7d40 Updated versions and changelogs 2023-12-31 19:16:27 +01:00
srcejon 720630c2fb Remove tabs. 2023-12-06 10:53:28 +00:00
srcejon 238a40b9e0 Allow replay time offset to be set by ctrl+left click in waterfall. 2023-12-06 10:09:30 +00:00
f4exb 07e8ae0de1 Updated changelogs and plugins versions 2023-11-29 05:00:58 +01:00
srcejon 4418fe936a Fix gcc warnings and remove debug 2023-11-22 15:12:25 +00:00
srcejon 7cc9cd1bf1 Add instant replay 2023-11-22 14:28:35 +00:00
f4exb b6c4d10b62 Rewriting of copyright notices for plugins/samplesource. Part of #1893 2023-11-18 10:07:41 +01:00
Jon Beniston e799e5eb72 Fix resize cursor not being cleared when mouse moves over child widgets 2023-11-13 20:51:03 +00:00
f4exb 513c0e58fa Updated versions and changelogs 2023-09-22 00:55:00 +02:00
Jon Beniston 28c566f84c Add tunerType to Web API report 2023-09-15 09:33:24 +01:00
f4exb 7b85db4885 Update versions and changelogs 2023-09-02 23:18:51 +02:00
Jon Beniston 2c636afa67 Add support for RTLSDRBlog V4 with HF upsampler 2023-08-26 14:25:03 +01:00
Jon Beniston 05914cc0ba Fix RTLSDR E4000 gain and bandwidth settings. Add tuner type to GUI. 2023-08-25 15:04:57 +01:00
Daniele Forsi c6195634f9 Fix repeated words
Found with:
grep -r " \([[:alpha:]]\+\) \1 " --color=yes --include=*.md
2023-05-04 21:42:49 +02:00