Compare commits

...

8 Commits

Author SHA1 Message Date
dforsi 3178378161
Merge 39a24510fa into 217c900609 2024-04-29 19:00:10 +02:00
Daniele Forsi 39a24510fa Fix memleaks found with AddressSanitizer/LeakSanitizer
Found with:
ASAN_OPTIONS="detect_odr_violation=1,strip_path_prefix=$(pwd)/" build/sdrangel

Fixes:
Direct leak of 176096 byte(s) in 5503 object(s) allocated from:
    #0 0x7f3a464f46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7f3a44009219 in Airline::Init::Init() sdrbase/util/airlines.cpp:5559
    #2 0x7f3a43dc797d in _sub_I_65535_0.0 (build/lib/libsdrbase.so+0x3c797d) (BuildId: fb568b705538a6e506ee23027626f4366b25aa50)
    #3 0x7f3a46c6ce3d in call_init elf/dl-init.c:74
    #4 0x7f3a46c6ce3d in call_init elf/dl-init.c:26

Indirect leak of 989274 byte(s) in 22012 object(s) allocated from:
    #0 0x7f3a464f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x7f3a410e63f1 in QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlags<QArrayData::AllocationOption>) (/lib/x86_64-linux-gnu/libQt5Core.so.5+0xe63f1) (BuildId: eaf989d675ab5f0e8e9033fa527c9ed018f70370)
2024-04-29 18:59:37 +02:00
Daniele Forsi d4040c0eea Fix memleak found with AddressSanitizer/LeakSanitizer
Found with:
ASAN_OPTIONS="detect_odr_violation=1,strip_path_prefix=$(pwd)/" build/sdrangel

Fixes:
Indirect leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x7faba78f46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7faba73281e1 in GLShaderSpectrogram::initializeGL(int, int) sdrgui/gui/glshaderspectrogram.cpp:118
    #2 0x7faba7369b54 in GLSpectrumView::initializeGL() sdrgui/gui/glspectrumview.cpp:937
    #3 0x7faba33c4f45 in QOpenGLWidget::resizeEvent(QResizeEvent*) (/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1c4f45) (BuildId: 983eca66d9695a1892aa796da4160d8d6f9b9ac4)
2024-04-25 19:12:02 +02:00
Daniele Forsi bf1f90feab Fix memleaks found with AddressSanitizer/LeakSanitizer
Found with:
ASAN_OPTIONS="detect_odr_violation=1,strip_path_prefix=$(pwd)/" build/sdrangel

Fixes:
Direct leak of 56 byte(s) in 1 object(s) allocated from:
    #0 0x7f9d7d0f46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7f9d7af247aa in MainCore::appendDeviceSet(int) sdrbase/maincore.cpp:219
    #2 0x7f9d7c95c8a5 in MainWindow::sampleSourceAdd(Workspace*, Workspace*, int) sdrgui/mainwindow.cpp:359
    #3 0x7f9d7c97ce3c in MainWindow::loadConfiguration(Configuration const*, bool) sdrgui/mainwindow.cpp:1439
    #4 0x7f9d7c95a610 in MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) sdrgui/mainwindow.cpp:261
    #5 0x562f7c492175 in runQtApplication app/main.cpp:196
    #6 0x562f7c48fab7 in main app/main.cpp:248
    #7 0x7f9d776456c9 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

and 34 others that I'm not copying here.
2024-04-25 19:12:02 +02:00
Daniele Forsi f58a86ae0b Fix memleak found with AddressSanitizer/LeakSanitizer
Found with:
ASAN_OPTIONS="detect_odr_violation=1,strip_path_prefix=$(pwd)/" build/sdrangel

Fixes:
Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x7ff2588f46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7ff256723dd0 in MainCore::appendFeatureSet() sdrbase/maincore.cpp:190
    #2 0x7ff25817fb89 in MainWindow::addFeatureSet() sdrgui/mainwindow.cpp:1191
    #3 0x7ff25815a4d0 in MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) sdrgui/mainwindow.cpp:250
    #4 0x559632289175 in runQtApplication app/main.cpp:196
    #5 0x559632286ab7 in main app/main.cpp:248
    #6 0x7ff252e456c9 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
2024-04-25 19:12:02 +02:00
Daniele Forsi d8d884a224 Fix memleaks found with AddressSanitizer/LeakSanitizer
Fixes:
Direct leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x7eff8bcf46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7eff897b484d in DeviceUserArgs::serialize() const sdrbase/device/deviceuserargs.cpp:43
    #2 0x7eff897f4904 in MainSettings::save() const sdrbase/settings/mainsettings.cpp:237
    #3 0x7eff8b578654 in MainWindow::closeEvent(QCloseEvent*) sdrgui/mainwindow.cpp:1749
    #4 0x7eff877a5dc7 in QWidget::event(QEvent*) (/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1a5dc7) (BuildId: 983eca66d9695a1892aa796da4160d8d6f9b9ac4)

Direct leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x7eff8bcf46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7eff897b484d in DeviceUserArgs::serialize() const sdrbase/device/deviceuserargs.cpp:43
    #2 0x7eff897f4904 in MainSettings::save() const sdrbase/settings/mainsettings.cpp:237
    #3 0x7eff8b552c9a in MainWindow::~MainWindow() sdrgui/mainwindow.cpp:326
    #4 0x564e8b36e1e5 in runQtApplication app/main.cpp:212
    #5 0x564e8b36bab7 in main app/main.cpp:248
    #6 0x7eff862456c9 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
2024-04-25 19:12:02 +02:00
Daniele Forsi c04bd8d309 Fix memleaks found with AddressSanitizer/LeakSanitizer
Found with:
ASAN_OPTIONS="detect_odr_violation=1,strip_path_prefix=$(pwd)/" build/sdrangel

Fixes:
Direct leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7f7b94ef46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7f7b929ff74c in MainSettings::load() sdrbase/settings/mainsettings.cpp:153
    #2 0x7f7b947614f6 in MainWindow::loadSettings() sdrgui/mainwindow.cpp:1230
    #3 0x7f7b94759e11 in MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) sdrgui/mainwindow.cpp:211
    #4 0x55b694e0a175 in runQtApplication app/main.cpp:196
    #5 0x55b694e07ab7 in main app/main.cpp:248
    #6 0x7f7b8f4456c9 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

Indirect leak of 136 byte(s) in 1 object(s) allocated from:
    #0 0x7f7b94ef46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7f7b929e734d in QList<Preset>::node_construct(QList<Preset>::Node*, Preset const&) /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:465
    #2 0x7f7b929e734d in QList<Preset>::append(Preset const&) /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:625
    #3 0x7f7b929e734d in QList<Preset>::push_back(Preset const&) /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:377
    #4 0x7f7b929e734d in Configuration::deserialize(QByteArray const&) sdrbase/settings/configuration.cpp:112
    #5 0x7f7b929ff934 in MainSettings::load() sdrbase/settings/mainsettings.cpp:155
    #6 0x7f7b947614f6 in MainWindow::loadSettings() sdrgui/mainwindow.cpp:1230
    #7 0x7f7b94759e11 in MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) sdrgui/mainwindow.cpp:211
    #8 0x55b694e0a175 in runQtApplication app/main.cpp:196
    #9 0x55b694e07ab7 in main app/main.cpp:248
    #10 0x7f7b8f4456c9 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x7f7b94ef46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95
    #1 0x7f7b929e9706 in QList<Preset::DeviceConfig>::node_construct(QList<Preset::DeviceConfig>::Node*, Preset::DeviceConfig const&) /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:465
    #2 0x7f7b929e9706 in QList<Preset::DeviceConfig>::append(Preset::DeviceConfig const&) /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:625
    #3 0x7f7b929f627c in Preset::deserialize(QByteArray const&) sdrbase/settings/preset.cpp:193
    #4 0x7f7b929e74ca in Configuration::deserialize(QByteArray const&) sdrbase/settings/configuration.cpp:113
    #5 0x7f7b929ff934 in MainSettings::load() sdrbase/settings/mainsettings.cpp:155
    #6 0x7f7b947614f6 in MainWindow::loadSettings() sdrgui/mainwindow.cpp:1230
    #7 0x7f7b94759e11 in MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) sdrgui/mainwindow.cpp:211
    #8 0x55b694e0a175 in runQtApplication app/main.cpp:196
    #9 0x55b694e07ab7 in main app/main.cpp:248
    #10 0x7f7b8f4456c9 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
2024-04-25 19:12:02 +02:00
Daniele Forsi 4b48a7764f Add cmake option to optionally compile with LeakSanitizer
Alse change the description of the existing option SANITIZE_ADDRESS to avoid ambiguity.
2024-04-25 19:12:01 +02:00
7 changed files with 21 additions and 3 deletions

View File

@ -25,7 +25,8 @@ set(sdrangel_VERSION_SUFFIX "")
# SDRAngel cmake options
option(DEBUG_OUTPUT "Print debug messages" OFF)
option(SANITIZE_ADDRESS "Activate memory address sanitization" OFF)
option(SANITIZE_ADDRESS "Activate detection of uninitialized memory (AddressSanitizer)" OFF)
option(SANITIZE_MEMORY "Activate detection of leaked memory (LeakSanitizer)" OFF)
option(RX_SAMPLE_24BIT "Internal 24 bit Rx DSP" ON)
option(BUILD_SERVER "Build Server" ON)
option(BUILD_GUI "Build GUI" ON)

View File

@ -40,8 +40,8 @@ QByteArray DeviceUserArgs::serialize() const
{
SimpleSerializer s(1);
QByteArray data;
QDataStream *stream = new QDataStream(&data, QIODevice::WriteOnly);
*stream << m_argsByDevice;
QDataStream stream(&data, QIODevice::WriteOnly);
stream << m_argsByDevice;
s.writeBlob(1, data);
return s.final();
}

View File

@ -209,6 +209,7 @@ void MainCore::removeLastFeatureSet()
FeatureSet *featureSet = m_featureSets.back();
m_featureSetsMap.remove(featureSet);
m_featureSets.pop_back();
delete featureSet;
}
}
@ -227,6 +228,7 @@ void MainCore::removeLastDeviceSet()
DeviceSet *deviceSet = m_deviceSets.back();
m_deviceSetsMap.remove(deviceSet);
m_deviceSets.pop_back();
delete deviceSet;
}
}

View File

@ -52,6 +52,11 @@ MainSettings::~MainSettings()
{
delete m_pluginPresets[i];
}
for (int i = 0; i < m_configurations.count(); ++i)
{
delete m_configurations[i];
}
}
QString MainSettings::getFileLocation() const

View File

@ -5560,3 +5560,10 @@ Airline::Init::Init()
s += 4;
}
}
Airline::Init::~Init()
{
foreach(const QString s, m_icaoHash.keys()) {
delete m_icaoHash[s];
}
}

View File

@ -55,6 +55,7 @@ private:
friend struct Init;
struct Init {
Init();
~Init();
static const char *m_airlines[];
};
static Init m_init;

View File

@ -514,6 +514,8 @@ void GLShaderSpectrogram::drawSurface(SpectrumSettings::SpectrogramStyle style,
void GLShaderSpectrogram::cleanup()
{
delete m_vao;
m_vao = nullptr;
delete m_programShaded;
m_programShaded = nullptr;
delete m_programSimple;