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

RAM consumption on commit fa0087aeb0970e5483f507418019a033e58c1fa3 #101

Closed
voloviq opened this issue Dec 18, 2017 · 12 comments
Closed

RAM consumption on commit fa0087aeb0970e5483f507418019a033e58c1fa3 #101

voloviq opened this issue Dec 18, 2017 · 12 comments
Labels

Comments

@voloviq
Copy link

voloviq commented Dec 18, 2017

Hi David,
I check latest version commit fa0087a. Everythings works fine but after 1hour or 1 and a half Openhantek consumed all of my RAM memory I mean all 8Gbytes. I discovered that because on my desktop I have installed screenlets meter applet with ram usage option sets. Of course after close application system release more than 80% of ram.
So please check maybe some objects are not released and increase continuously.

Besides that issue, everything seems to works well.

Thanks a lot
for Your job
BR
Voloviq

@voloviq
Copy link
Author

voloviq commented Dec 18, 2017

Hi again,
below I added screen after 1,5hours more or less
ram_issue_openhantek
RAM usage still increase, from screenshot now is 69%. The application still works well.

@voloviq
Copy link
Author

voloviq commented Dec 18, 2017

Finally, waveform freezes, LED green still continuous blinking. Memory still increasing
ram_issue_openhantek
I stop testing at this moment. When the closed app, memory level go back to normal usage. When again run the app. everything works well.
BR
Voloviq

@davidgraeff
Copy link
Member

Thanks for the detailed analysis. I think it is the dataanalyser class' fault.

@davidgraeff
Copy link
Member

I have found the issue. The newly introduced DataAnalyzerResult class doesn't free the fast fourier transformation buffer (field window). This way after each processed samples batch, a new buffer is allocated.

@voloviq
Copy link
Author

voloviq commented Dec 19, 2017

Hi David,
it good to hear that You detect leakage. If You want I can test fixed version. Please inform me when You finish it. Of course, You can close this issue.
Best Regards
Voloviq

@davidgraeff
Copy link
Member

@voloviq Can you please retest? I thing I fixed the ram issue

@voloviq
Copy link
Author

voloviq commented Dec 20, 2017

Hi David,
so everything compile well, after first start firmware was not found but red LED start blinking. Next segmentation fault

mw@yoga510:~/temp/openhantek_latest/openhantek/build$ OpenHantek
terminate called after throwing an instance of 'std::runtime_error*'

I used valgrind to get failure place,

mw@yoga510:~/temp/openhantek_latest/openhantek/build$ valgrind OpenHantek
==8836== Memcheck, a memory error detector
==8836== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==8836== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==8836== Command: OpenHantek
==8836==
--8836-- WARNING: Serious error when reading debug info
--8836-- When reading debug info from /lib/x86_64-linux-gnu/libusb-1.0.so.0.1.0:
--8836-- Ignoring non-Dwarf2/3/4 block in .debug_info
--8836-- WARNING: Serious error when reading debug info
--8836-- When reading debug info from /lib/x86_64-linux-gnu/libusb-1.0.so.0.1.0:
--8836-- Last block truncated in .debug_info; ignoring
--8836-- WARNING: Serious error when reading debug info
--8836-- When reading debug info from /lib/x86_64-linux-gnu/libusb-1.0.so.0.1.0:
--8836-- parse_CU_Header: is neither DWARF2 nor DWARF3 nor DWARF4
==8836== Conditional jump or move depends on uninitialised value(s)
==8836== at 0x1258512D: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x9A1F1D3: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A399A5: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A3A554: g_signal_emit_by_name (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A268F7: g_object_set_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A26FCB: g_object_set (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x5902975: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x58864DC: QStyleFactory::create(QString const&) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x581F754: QApplication::style() (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x581FB1C: QApplicationPrivate::initialize() (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x581FB6E: QApplicationPrivate::construct() (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x414E5D: main (main.cpp:41)
==8836==
==8836== Conditional jump or move depends on uninitialised value(s)
==8836== at 0x9CDB3A8: g_utf8_offset_to_pointer (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2)
==8836== by 0x12588724: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x12588D28: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x1258905E: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x9A1EFA4: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A30AFB: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A39D5B: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A3A08E: g_signal_emit (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x12717BC3: gtk_widget_realize (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x12718ED7: gtk_widget_set_parent (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x125B7A72: gtk_fixed_put (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x9A220A6: g_cclosure_marshal_VOID__OBJECTv (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836==
==8836== Conditional jump or move depends on uninitialised value(s)
==8836== at 0x9CDB3D5: g_utf8_offset_to_pointer (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2)
==8836== by 0x12588724: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x12588D28: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x1258905E: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x9A1EFA4: g_closure_invoke (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A30AFB: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A39D5B: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x9A3A08E: g_signal_emit (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836== by 0x12717BC3: gtk_widget_realize (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x12718ED7: gtk_widget_set_parent (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x125B7A72: gtk_fixed_put (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30)
==8836== by 0x9A220A6: g_cclosure_marshal_VOID__OBJECTv (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2)
==8836==
==8836== Conditional jump or move depends on uninitialised value(s)
==8836== at 0x43E483: valueToString(double, Unit, int) (printutils.cpp:49)
==8836== by 0x419561: SiSpinBox::textFromValue(double) const (sispinbox.cpp:73)
==8836== by 0x59B3DDC: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x591FBC3: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x5921BDB: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59B595B: QDoubleSpinBox::setValue(double) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x4198E0: SiSpinBox::init() (sispinbox.cpp:164)
==8836== by 0x419A68: SiSpinBox::SiSpinBox(Unit, QWidget*) (sispinbox.cpp:41)
==8836== by 0x429816: HorizontalDock::HorizontalDock(DsoSettings*, QWidget*, QFlagsQt::WindowType) (HorizontalDock.cpp:31)
==8836== by 0x432C5C: OpenHantekMainWindow::createDockWindows() (mainwindow.cpp:277)
==8836== by 0x435260: OpenHantekMainWindow::OpenHantekMainWindow(HantekDsoControl*, DataAnalyzer*, DsoSettings*) (mainwindow.cpp:50)
==8836== by 0x415E2C: main (main.cpp:170)
==8836==
==8836== Use of uninitialised value of size 8
==8836== at 0x43E498: valueToString(double, Unit, int) (printutils.cpp:49)
==8836== by 0x419561: SiSpinBox::textFromValue(double) const (sispinbox.cpp:73)
==8836== by 0x59B3DDC: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x591FBC3: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x5921BDB: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59B595B: QDoubleSpinBox::setValue(double) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x4198E0: SiSpinBox::init() (sispinbox.cpp:164)
==8836== by 0x419A68: SiSpinBox::SiSpinBox(Unit, QWidget*) (sispinbox.cpp:41)
==8836== by 0x429816: HorizontalDock::HorizontalDock(DsoSettings*, QWidget*, QFlagsQt::WindowType) (HorizontalDock.cpp:31)
==8836== by 0x432C5C: OpenHantekMainWindow::createDockWindows() (mainwindow.cpp:277)
==8836== by 0x435260: OpenHantekMainWindow::OpenHantekMainWindow(HantekDsoControl*, DataAnalyzer*, DsoSettings*) (mainwindow.cpp:50)
==8836== by 0x415E2C: main (main.cpp:170)
==8836==
==8836== Conditional jump or move depends on uninitialised value(s)
==8836== at 0x43F2E8: stringToValue(QString const&, Unit, bool*) (printutils.cpp:173)
==8836== by 0x41947D: SiSpinBox::validate(QString&, int&) const (sispinbox.cpp:57)
==8836== by 0x59FAA5D: QWidgetLineControl::finishChange(int, bool, bool) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59FAFD0: QWidgetLineControl::internalSetText(QString const&, int, bool) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x596EA65: QLineEdit::setText(QString const&) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x591F902: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x5921BDB: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59B595B: QDoubleSpinBox::setValue(double) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x4198E0: SiSpinBox::init() (sispinbox.cpp:164)
==8836== by 0x419A68: SiSpinBox::SiSpinBox(Unit, QWidget*) (sispinbox.cpp:41)
==8836== by 0x429816: HorizontalDock::HorizontalDock(DsoSettings*, QWidget*, QFlagsQt::WindowType) (HorizontalDock.cpp:31)
==8836== by 0x432C5C: OpenHantekMainWindow::createDockWindows() (mainwindow.cpp:277)
==8836==
==8836== Use of uninitialised value of size 8
==8836== at 0x43F2F7: stringToValue(QString const&, Unit, bool*) (printutils.cpp:173)
==8836== by 0x41947D: SiSpinBox::validate(QString&, int&) const (sispinbox.cpp:57)
==8836== by 0x59FAA5D: QWidgetLineControl::finishChange(int, bool, bool) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59FAFD0: QWidgetLineControl::internalSetText(QString const&, int, bool) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x596EA65: QLineEdit::setText(QString const&) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x591F902: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x5921BDB: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59B595B: QDoubleSpinBox::setValue(double) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x4198E0: SiSpinBox::init() (sispinbox.cpp:164)
==8836== by 0x419A68: SiSpinBox::SiSpinBox(Unit, QWidget*) (sispinbox.cpp:41)
==8836== by 0x429816: HorizontalDock::HorizontalDock(DsoSettings*, QWidget*, QFlagsQt::WindowType) (HorizontalDock.cpp:31)
==8836== by 0x432C5C: OpenHantekMainWindow::createDockWindows() (mainwindow.cpp:277)
==8836==
==8836== Conditional jump or move depends on uninitialised value(s)
==8836== at 0x43E483: valueToString(double, Unit, int) (printutils.cpp:49)
==8836== by 0x419561: SiSpinBox::textFromValue(double) const (sispinbox.cpp:73)
==8836== by 0x4194B3: SiSpinBox::validate(QString&, int&) const (sispinbox.cpp:61)
==8836== by 0x59FAA5D: QWidgetLineControl::finishChange(int, bool, bool) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59FAFD0: QWidgetLineControl::internalSetText(QString const&, int, bool) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x596EA65: QLineEdit::setText(QString const&) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x591F902: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x5921BDB: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59B595B: QDoubleSpinBox::setValue(double) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x4198E0: SiSpinBox::init() (sispinbox.cpp:164)
==8836== by 0x419A68: SiSpinBox::SiSpinBox(Unit, QWidget*) (sispinbox.cpp:41)
==8836== by 0x429816: HorizontalDock::HorizontalDock(DsoSettings*, QWidget*, QFlagsQt::WindowType) (HorizontalDock.cpp:31)
==8836==
==8836== Use of uninitialised value of size 8
==8836== at 0x43E498: valueToString(double, Unit, int) (printutils.cpp:49)
==8836== by 0x419561: SiSpinBox::textFromValue(double) const (sispinbox.cpp:73)
==8836== by 0x4194B3: SiSpinBox::validate(QString&, int&) const (sispinbox.cpp:61)
==8836== by 0x59FAA5D: QWidgetLineControl::finishChange(int, bool, bool) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59FAFD0: QWidgetLineControl::internalSetText(QString const&, int, bool) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x596EA65: QLineEdit::setText(QString const&) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x591F902: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x5921BDB: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x59B595B: QDoubleSpinBox::setValue(double) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x4198E0: SiSpinBox::init() (sispinbox.cpp:164)
==8836== by 0x419A68: SiSpinBox::SiSpinBox(Unit, QWidget*) (sispinbox.cpp:41)
==8836== by 0x429816: HorizontalDock::HorizontalDock(DsoSettings*, QWidget*, QFlagsQt::WindowType) (HorizontalDock.cpp:31)
==8836==
==8836== Syscall param writev(vector[...]) points to uninitialised byte(s)
==8836== at 0x710AFBD: ??? (syscall-template.S:84)
==8836== by 0x91DBF28: ??? (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==8836== by 0x91DC31C: ??? (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==8836== by 0x91DCA76: ??? (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==8836== by 0x91DD6A2: ??? (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==8836== by 0x91DD720: xcb_wait_for_reply (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==8836== by 0x4165579: QXcbConnection::sync() (in /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5.5.1)
==8836== by 0x417DEAB: QXcbWindow::setWindowState(Qt::WindowState) (in /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5.5.1)
==8836== by 0x5E467A7: QWindow::setWindowState(Qt::WindowState) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1)
==8836== by 0x585BED5: QWidget::setWindowState(QFlagsQt::WindowState) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x585C321: QWidget::restoreGeometry(QByteArray const&) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1)
==8836== by 0x42F833: OpenHantekMainWindow::applySettings() (mainwindow.cpp:412)
==8836== Address 0xdae5a52 is 4,530 bytes inside a block of size 21,152 alloc'd
==8836== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8836== by 0x91DB8DB: xcb_connect_to_fd (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==8836== by 0x91DF610: xcb_connect_to_display_with_auth_info (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==8836== by 0x8AB6809: _XConnectXCB (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==8836== by 0x8AA7391: XOpenDisplay (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==8836== by 0x416A70E: QXcbConnection::QXcbConnection(QXcbNativeInterface*, bool, unsigned int, char const*) (in /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5.5.1)
==8836== by 0x416DBAC: QXcbIntegration::QXcbIntegration(QStringList const&, int&, char**) (in /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5.5.1)
==8836== by 0x40293AC: ??? (in /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so)
==8836== by 0x5E2ED91: QPlatformIntegrationFactory::create(QString const&, QStringList const&, int&, char**, QString const&) (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1)
==8836== by 0x5E3AFC3: QGuiApplicationPrivate::createPlatformIntegration() (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1)
==8836== by 0x5E3BECC: QGuiApplicationPrivate::createEventDispatcher() (in /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1)
==8836== by 0x65217E5: QCoreApplication::init() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1)
==8836==
terminate called after throwing an instance of 'std::runtime_error*'
==8836==
==8836== Process terminating with default action of signal 6 (SIGABRT)
==8836== at 0x7043428: raise (raise.c:54)
==8836== by 0x7045029: abort (abort.c:89)
==8836== by 0x67FC84C: __gnu_cxx::__verbose_terminate_handler() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==8836== by 0x67FA6B5: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==8836== by 0x67FA700: std::terminate() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==8836== by 0x67FA918: __cxa_throw (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==8836== by 0x4290D0: HorizontalDock::setRecordLength(unsigned int) (HorizontalDock.cpp:140)
==8836== by 0x429352: HorizontalDock::availableRecordLengthsChanged(std::vector<unsigned int, std::allocator > const&) (HorizontalDock.cpp:167)
==8836== by 0x654BBAE: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1)
==8836== by 0x45A904: HantekDsoControl::availableRecordLengthsChanged(std::vector<unsigned int, std::allocator > const&) (moc_hantekdsocontrol.cpp:411)
==8836== by 0x446632: HantekDsoControl::startSampling() (hantekdsocontrol.cpp:26)
==8836== by 0x415E40: main (main.cpp:174)
==8836==
==8836== HEAP SUMMARY:
==8836== in use at exit: 50,565,702 bytes in 58,323 blocks
==8836== total heap usage: 210,611 allocs, 152,288 frees, 88,272,562 bytes allocated
==8836==
==8836== LEAK SUMMARY:
==8836== definitely lost: 210,612 bytes in 89 blocks
==8836== indirectly lost: 16,538 bytes in 690 blocks
==8836== possibly lost: 45,872,339 bytes in 7,371 blocks
==8836== still reachable: 4,152,549 bytes in 48,682 blocks
==8836== of which reachable via heuristic:
==8836== stdstring : 54 bytes in 1 blocks
==8836== length64 : 7,664 bytes in 113 blocks
==8836== newarray : 2,112 bytes in 52 blocks
==8836== multipleinheritance: 504 bytes in 3 blocks
==8836== suppressed: 0 bytes in 0 blocks
==8836== Rerun with --leak-check=full to see details of leaked memory
==8836==
==8836== For counts of detected and suppressed errors, rerun with: -v
==8836== Use --track-origins=yes to see where uninitialised values come from
==8836== ERROR SUMMARY: 28 errors from 10 contexts (suppressed: 0 from 0)

To summary, I was unable to see mainwindow at all. Please investigate code to find a leakage.
Let me know when You find a problem.

I compiled version from commit e6c6723

@davidgraeff
Copy link
Member

@voloviq I was able to verify the problem and I actually introduced the runtime exception on purpose, because the scopes record length was set, before the available record lengths were requested.
I solved it now in a different way.

@voloviq
Copy link
Author

voloviq commented Dec 21, 2017

Hi David,

now is better I mean OpenHantek start working, I can see waveform main window. Nevertheless when I connected to channel 1 to test generator 1kHz. I was unable to see the square waveform. I see only one line at bottom one line at the top and from time to time one transition. Regulation of timebase, sample rate and frequency base don't give demanded effect. I encounter two times segmentation and one time

mw@yoga510:~/temp/openhantek_latest/openhantek/build$ OpenHantek
QObject::connect: Cannot queue arguments of type 'std::vector'
(Make sure 'std::vector' is registered using qRegisterMetaType().)

I think there is still something to rework.

BR
Michal

@davidgraeff
Copy link
Member

davidgraeff commented Dec 21, 2017

Unfortunately I can only test with a 6022, which bypasses a lot of the code base, because it doesn't support hardware triggers or features offset commands or internal relays. I will try to find the problem.

Was it working when the RAM consumption was high? Or did I break it with that commit?

@dendvz
Copy link
Contributor

dendvz commented Dec 21, 2017

The Cannot queue arguments of type 'std::vector' message should be generated by this signal/slot pair:

    connect(dsoControl, &HantekDsoControl::availableRecordLengthsChanged, horizontalDock,
            &HorizontalDock::availableRecordLengthsChanged);

solution is to place

qRegisterMetaType<std::vector<unsigned> >();

into registerDockMetaTypes().

I am not sure if my observations are somehow related to this issue, but since one of the latest commits brightness of the waveform spontaneously changes... Might be a manifestation of race condition.

@davidgraeff
Copy link
Member

Race conditions shouldn't be possible with the current design. I think it might be related to a color settings override bug.

davidgraeff pushed a commit that referenced this issue Dec 22, 2017
GCarneiroA pushed a commit to GCarneiroA/openhantek that referenced this issue Oct 29, 2020
Signed-off-by: Martin <Ho-Ro@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants