Posted
over 9 years
ago
by
jcfr
BUG: Fix memory leak in qMRMLCheckableNodeComboBox
This commit fixes the error(s) reported below by valgrind memcheck tool.
Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
exected doing the following:
(1) Start a terminal
... [More]
with the appropriate environment: ./Slicer --gnome-terminal
(2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python --disable-cli-modules
(3) Exit Slicer and inspect valgrind log file
Valgrind error:
==29339== 474 (32 direct, 442 indirect) bytes in 1 blocks are definitely lost in loss record 2,158 of 2,448
==29339== at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339== by 0x5E1AA09: qMRMLCheckableNodeComboBoxPrivate::init(QAbstractItemModel*) (qMRMLCheckableNodeComboBox.cxx:63)
==29339== by 0x5E5E445: qMRMLNodeComboBox::qMRMLNodeComboBox(qMRMLNodeComboBoxPrivate*, QWidget*) (qMRMLNodeComboBox.cxx:399)
==29339== by 0x5E1AB88: qMRMLCheckableNodeComboBox::qMRMLCheckableNodeComboBox(QWidget*) (qMRMLCheckableNodeComboBox.cxx:89)
==29339== by 0x5E2E712: qMRMLDisplayNodeViewComboBox::qMRMLDisplayNodeViewComboBox(QWidget*) (qMRMLDisplayNodeViewComboBox.cxx:74)
==29339== by 0x1046D9FDC: Ui_qSlicerMarkupsModule::setupUi(qSlicerWidget*) (ui_qSlicerMarkupsModule.h:472)
==29339== by 0x1046C4016: qSlicerMarkupsModuleWidgetPrivate::setupUi(qSlicerWidget*) (qSlicerMarkupsModuleWidget.cxx:135)
==29339== by 0x1046C6B55: qSlicerMarkupsModuleWidget::setup() (qSlicerMarkupsModuleWidget.cxx:464)
==29339== by 0x8E819EA: qSlicerAbstractModuleRepresentation::setModule(qSlicerAbstractCoreModule*) (qSlicerAbstractModuleRepresentation.cxx:82)
==29339== by 0x8E714A2: qSlicerAbstractCoreModule::createNewWidgetRepresentation() (qSlicerAbstractCoreModule.cxx:258)
==29339== by 0x8E7133B: qSlicerAbstractCoreModule::widgetRepresentation() (qSlicerAbstractCoreModule.cxx:226)
==29339== by 0x1046C224A: qSlicerMarkupsModule::setup() (qSlicerMarkupsModule.cxx:153) [Less]
|
Posted
over 9 years
ago
by
jcfr
BUG: Fix memory leak in qMRMLThreeDView removing unused code
This commit removes code most likely inadvertently added during
the refactoring done in r17602 (ENH: Add qMRMLThreeDWidget and
qMRMLThreeDViewControllerWidget)
This commit fixes the
... [More]
error(s) reported below by valgrind memcheck tool.
Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
exected doing the following:
(1) Start a terminal with the appropriate environment: ./Slicer --gnome-terminal
(2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python --disable-cli-modules
(3) Exit Slicer and inspect valgrind log file
Valgrind error:
==29339== 4,757 (48 direct, 4,709 indirect) bytes in 1 blocks are definitely lost in loss record 2,402 of 2,448
==29339== at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339== by 0x5EAD8BC: qMRMLThreeDViewPrivate::init() (qMRMLThreeDView.cxx:80)
==29339== by 0x5EAE37C: qMRMLThreeDView::qMRMLThreeDView(QWidget*) (qMRMLThreeDView.cxx:227)
==29339== by 0x5EB59C6: qMRMLThreeDWidgetPrivate::init() (qMRMLThreeDWidget.cxx:84)
==29339== by 0x5EB5B76: qMRMLThreeDWidget::qMRMLThreeDWidget(QWidget*) (qMRMLThreeDWidget.cxx:102)
==29339== by 0x5E3E3C6: qMRMLLayoutThreeDViewFactory::createViewFromNode(vtkMRMLAbstractViewNode*) (qMRMLLayoutManager.cxx:76)
==29339== by 0x5E46804: qMRMLLayoutViewFactory::onViewNodeAdded(vtkMRMLAbstractViewNode*) (qMRMLLayoutViewFactory.cxx:373)
==29339== by 0x5E46A9A: qMRMLLayoutViewFactory::onSceneModified() (qMRMLLayoutViewFactory.cxx:423)
==29339== by 0x5E45FD2: qMRMLLayoutViewFactory::setMRMLScene(vtkMRMLScene*) (qMRMLLayoutViewFactory.cxx:255)
==29339== by 0x5E41C2A: qMRMLLayoutManager::setMRMLScene(vtkMRMLScene*) (qMRMLLayoutManager.cxx:838)
==29339== by 0x4E57B4D: qSlicerAppMainWindowPrivate::setupUi(QMainWindow*) (qSlicerAppMainWindow.cxx:320)
==29339== by 0x4E56C59: qSlicerAppMainWindowPrivate::init() (qSlicerAppMainWindow.cxx:122) [Less]
|
Posted
over 9 years
ago
by
jcfr
BUG: Fix memory leak in vtkMRMLLayoutNode
This commit fixes the error(s) reported below by valgrind memcheck tool.
Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
exected doing the following:
(1) Start a terminal with the
... [More]
appropriate environment: ./Slicer --gnome-terminal
(2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python --disable-cli-modules
(3) Exit Slicer and inspect valgrind log file
Valgrind error:
==29339== 1,082 bytes in 1 blocks are definitely lost in loss record 2,290 of 2,448
==29339== at 0x4C2B800: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339== by 0xE6E4563: vtkMRMLLayoutNode::SetCurrentLayoutDescription(char const*) (in /home/jcfr/Projects/Slicer-Debug/Slicer-build/bin/libMRMLCore.so)
==29339== by 0xE6E05B0: vtkMRMLLayoutNode::SetAndParseCurrentLayoutDescription(char const*) (vtkMRMLLayoutNode.cxx:285)
==29339== by 0xE6E04D6: vtkMRMLLayoutNode::UpdateCurrentLayoutDescription() (vtkMRMLLayoutNode.cxx:273)
==29339== by 0xE6DFB4C: vtkMRMLLayoutNode::SetViewArrangement(int) (vtkMRMLLayoutNode.cxx:203)
==29339== by 0x5E4212D: qMRMLLayoutManager::setLayout(int) (qMRMLLayoutManager.cxx:903)
==29339== by 0x4E59081: qSlicerAppMainWindowPrivate::readSettings() (qSlicerAppMainWindow.cxx:490)
==29339== by 0x4E56CDE: qSlicerAppMainWindowPrivate::init() (qSlicerAppMainWindow.cxx:127)
==29339== by 0x4E5A98D: qSlicerAppMainWindow::qSlicerAppMainWindow(QWidget*) (qSlicerAppMainWindow.cxx:676)
==29339== by 0x406553: (anonymous namespace)::SlicerAppMain(int, char**) (Main.cxx:184)
==29339== by 0x406D30: main (Main.cxx:254) [Less]
|
Posted
over 9 years
ago
by
jcfr
BUG: Fix memory leak in vtkSlicerApplicationLogic
This commit fixes the error(s) reported below by valgrind memcheck tool.
Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
exected doing the following:
(1) Start a terminal
... [More]
with the appropriate environment: ./Slicer --gnome-terminal
(2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python --disable-cli-modules
(3) Exit Slicer and inspect valgrind log file
Valgrind error:
==29339== 336 bytes in 1 blocks are possibly lost in loss record 2,088 of 2,448
==29339== at 0x4C2CC70: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339== by 0x4012E54: _dl_allocate_tls (dl-tls.c:296)
==29339== by 0x1E25BDA0: pthread_create@@GLIBC_2.2.5 (allocatestack.c:589)
==29339== by 0x18D6A33E: itk::MultiThreader::SpawnThread(void* (*)(void*), void*) (itkMultiThreaderPThreads.cxx:186)
==29339== by 0x9259575: vtkSlicerApplicationLogic::CreateProcessingThread() (vtkSlicerApplicationLogic.cxx:354)
==29339== by 0x8E82DC8: qSlicerCoreApplicationPrivate::init() (qSlicerCoreApplication.cxx:255)
==29339== by 0x59272A7: qSlicerApplicationPrivate::init() (qSlicerApplication.cxx:180)
==29339== by 0x5927FDF: qSlicerApplication::qSlicerApplication(int&, char**) (qSlicerApplication.cxx:319)
==29339== by 0x406039: (anonymous namespace)::SlicerAppMain(int, char**) (Main.cxx:125)
==29339== by 0x406D30: main (Main.cxx:254) [Less]
|
Posted
over 9 years
ago
by
jcfr
BUG: Update VTK to include fix for memory leak in vtkSys SystemTools.
See Slicer/VTK@4b46455
Author: Jean-Christophe Fillion-Robin
Date: Thu Jul 16 14:54:10 2015 -0400
KWSys-SystemTools: Fix memory leak in DetectFileType
A more
... [More]
elaborated patch including update of the test case has been
pushed upstream: http://review.source.kitware.com/#/c/20003
This commit fixes the leak found using valgrind memcheck tool:
==29339== 512 bytes in 2 blocks are definitely lost in loss record 2,179 of 2,448
==29339== at 0x4C2B800: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339== by 0x28396AB8: vtksys::SystemTools::DetectFileType(char const*, unsigned long, double) (SystemTools.cxx:4142)
==29339== by 0x1018F9229: vtkSlicerColorLogic::FindColorFiles(std::vector > const&) (vtkSlicerColorLogic.cxx:177)
==29339== by 0x1018F86EA: vtkSlicerColorLogic::FindDefaultColorFiles() (vtkSlicerColorLogic.cxx:100)
==29339== by 0x9844613: vtkMRMLColorLogic::AddDefaultFileNodes() (vtkMRMLColorLogic.cxx:1016)
==29339== by 0x983DAF6: vtkMRMLColorLogic::AddDefaultColorNodes() (vtkMRMLColorLogic.cxx:144)
==29339== by 0x983D673: vtkMRMLColorLogic::OnMRMLSceneNewEvent() (vtkMRMLColorLogic.cxx:85)
==29339== by 0x983D629: vtkMRMLColorLogic::SetMRMLSceneInternal(vtkMRMLScene*) (vtkMRMLColorLogic.cxx:78)
==29339== by 0x982B4F9: vtkMRMLAbstractLogic::SetMRMLScene(vtkMRMLScene*) (vtkMRMLAbstractLogic.cxx:281)
==29339== by 0x8E70F0A: qSlicerAbstractCoreModule::setMRMLScene(vtkMRMLScene*) (qSlicerAbstractCoreModule.cxx:168)
==29339== by 0x101492780: qSlicerColorsModule::setMRMLScene(vtkMRMLScene*) (qSlicerColorsModule.cxx:132)
==29339== by 0x8EA2B1A: qSlicerModuleFactoryManager::loadModule(QString const&, QString const&) (qSlicerModuleFactoryManager.cxx:181) [Less]
|
Posted
over 9 years
ago
by
jcfr
BUG: Update CTK (include fix for memory leak in ctkDoubleSpinBox)
Among other changes, it include fixes and improvement for:
ctkColorPickerButton
ctkDoubleSpinBox
ctkVTKTextPropertyWidget
ctkXNAT
$ git shortlog 9e5af26..7bb708c --no-merges
... [More]
Andreas Fetzer (45):
Initial commit
Removed unused function declaration
Added new class ctkXnatResourceFolder.
Adapted documentation. Currently the remove() function does not modify the object on the server
Added possibility to set a default file download path to ctkXnatSession. If the specified location does not exist its value will be set to the current working directory
Since some of the ctkXnatObject support retrieving a last modification time (e.g. project) this function should be virtual so that is can be overwritten by the according subclasses
Also check if path is empty
Continued refactoring of the upload functions:
Added convenience method for adding a resource to a xnatObject
Enhanced xnatTreeBrowser so that resource creation and file upload can be tested
Fixed build error and removed useless upload function from xnatTreeModel
Some minor fixes.
Added dirty flag to indicate whether a xnat object was modified
Don't update the modified flag after an object was saved on the server and the ID was set afterwards
cosmetic changes
If a file with the given name already exits on the server set the overwrite flag to true
Added rudimentary check whether the file upload was successful. Right now just the filesize is compared. Checksum would be better.
Setting correct filename for upload
Added file upload validation to saveImpl of ctkXnatFile
Fixed iteration over md5 results
Adapted add(child) function of ctkXnatObject
Added function for adding a new child node to ctkXnatTreeModel
Return resource folder after creation
Added overwrite flag for file upload
Use QXmlStreamReader instead of deprecated QXml module classes
Some Qt5 adaptions
Added tests for:
Cleaned up code
Fixed build error on Mac
Removed unused modified flag again
Further cleanup
Fixed possible invalid directory path
Improved check for valid directory path
Removed function calls that were made for testing reasons
Replaced for loop with iterators.
Only add folder if it not exists
Added refesh function to ctkXnatTreeModel
Fixed crash which might happen if the xnatObject is null
Added name and label getters to all XNAT folder objects
Synchronize deleted objects as well
Use iterator instead of foreach
Fixed query parameters for httpPut
Fixed build error on Mac OS X
Added include for QScopedPointer and QObject
Added include for QSharedPointer
Benjamin BENEY (3):
Add text size in ctkVTKTextPropertyWidget
Change icon for invalid color in ctkColorPickerButton
Fix ctkColorPickerButton build error
Jean-Christophe Fillion-Robin (1):
Fix memory leak associated with ctkDoubleSpinBox ensuring pimpl is deleted [Less]
|
Posted
over 9 years
ago
by
jcfr
BUG: Fix memory leak in vtkMRMLSubjectHierarchyNode
This commit fixes the error(s) reported below by valgrind memcheck tool.
Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
exected doing the following:
(1) Start a
... [More]
terminal with the appropriate environment: ./Slicer --gnome-terminal
(2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python --disable-cli-modules
(3) Exit Slicer and inspect valgrind log file
Valgrind error:
==29339== 6 bytes in 1 blocks are definitely lost in loss record 24 of 2,448
==29339== at 0x4C2B800: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339== by 0x10599640D: vtkMRMLSubjectHierarchyNode::SetLevel(char const*) (in /home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-loadable-modules/libvtkSlicerSubjectHierarchyModuleMRML.so)
==29339== by 0x10598C253: vtkMRMLSubjectHierarchyNode::vtkMRMLSubjectHierarchyNode() (vtkMRMLSubjectHierarchyNode.cxx:60)
==29339== by 0x10598C144: vtkMRMLSubjectHierarchyNode::New() (vtkMRMLSubjectHierarchyNode.cxx:52)
==29339== by 0x108325A18: vtkSmartPointer::New() (vtkSmartPointer.h:117)
==29339== by 0x1083235AC: vtkSlicerSubjectHierarchyModuleLogic::RegisterNodes() (vtkSlicerSubjectHierarchyModuleLogic.cxx:73)
==29339== by 0x982B519: vtkMRMLAbstractLogic::SetMRMLScene(vtkMRMLScene*) (vtkMRMLAbstractLogic.cxx:285)
==29339== by 0x8E70F0A: qSlicerAbstractCoreModule::setMRMLScene(vtkMRMLScene*) (qSlicerAbstractCoreModule.cxx:168)
==29339== by 0x8EA2B1A: qSlicerModuleFactoryManager::loadModule(QString const&, QString const&) (qSlicerModuleFactoryManager.cxx:181)
==29339== by 0x8EA2586: qSlicerModuleFactoryManager::loadModule(QString const&) (qSlicerModuleFactoryManager.cxx:110)
==29339== by 0x40672A: (anonymous namespace)::SlicerAppMain(int, char**) (Main.cxx:193)
==29339== by 0x406D30: main (Main.cxx:254) [Less]
|
Posted
over 9 years
ago
by
jcfr
BUG: Fix uninitialized value in vtkMRMLColorTableNode.
Within vtkMRMLColorTableStorageNode::ReadDataInternal(), the method
vtkMRMLColorTableNode::SetColor() is called iteratively for all entries
to initialize the color names. In the same time
... [More]
, within SetColor(), the
method SetNamesFromColors() is also called.
This last call to SetNamesFromColors() is the problematic one. Indeed, it
attempts to initialize the color name for all entries while color values
are being set.
Since all color names are explicitly initialized, this commit removes
the call to "SetNamesFromColors()" from "SetColor()" function.
This commit fixes the error(s) reported below by valgrind memcheck tool.
Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
exected doing the following:
(1) Start a terminal with the appropriate environment: ./Slicer --gnome-terminal
(2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python --disable-cli-modules
(3) Exit Slicer and inspect valgrind log file
Valgrind error:
==17091== Conditional jump or move depends on uninitialised value(s)
==17091== at 0x2A67C4E7: __printf_fp (printf_fp.c:400)
==17091== by 0x2A67B792: vfprintf (vfprintf.c:1660)
==17091== by 0x2A69F578: vsnprintf (vsnprintf.c:119)
==17091== by 0x2A196E0F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19)
==17091== by 0x2A19D263: std::ostreambuf_iterator > std::num_put > >::_M_insert_float(std::ostreambuf_iterator >, std::ios_base&, char, char, double) const (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19)
==17091== by 0x2A19D54F: std::num_put > >::do_put(std::ostreambuf_iterator >, std::ios_base&, char, double) const (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19)
==17091== by 0x2A1A8AF4: std::ostream& std::ostream::_M_insert(double) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19)
==17091== by 0xDB0E07B: vtkMRMLColorNode::SetNameFromColor(int) (vtkMRMLColorNode.cxx:312)
==17091== by 0xDB0DEBD: vtkMRMLColorNode::SetNamesFromColors() (vtkMRMLColorNode.cxx:295)
==17091== by 0xDB1CF37: vtkMRMLColorTableNode::SetColor(int, char const*, double, double, double, double) (vtkMRMLColorTableNode.cxx:1301)
==17091== by 0xDB1F84D: vtkMRMLColorTableStorageNode::ReadDataInternal(vtkMRMLNode*) (vtkMRMLColorTableStorageNode.cxx:146)
==17091== by 0xDCDE6D5: vtkMRMLStorageNode::ReadData(vtkMRMLNode*, bool) (vtkMRMLStorageNode.cxx:1067)
==17091== Uninitialised value was created by a heap allocation
==17091== at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17091== by 0x299257A3: vtkDataArrayTemplate::Allocate(long long, long long) (vtkDataArrayTemplate.txx:137)
==17091== by 0x29928227: vtkDataArrayTemplate::SetNumberOfValues(long long) (vtkDataArrayTemplate.txx:921)
==17091== by 0x29925A27: vtkDataArrayTemplate::SetNumberOfTuples(long long) (vtkDataArrayTemplate.txx:355)
==17091== by 0x2986995A: vtkLookupTable::SetNumberOfTableValues(long long) (vtkLookupTable.cxx:1045)
==17091== by 0xDB1C6B5: vtkMRMLColorTableNode::SetNumberOfColors(int) (vtkMRMLColorTableNode.cxx:1241)
==17091== by 0xDB1F783: vtkMRMLColorTableStorageNode::ReadDataInternal(vtkMRMLNode*) (vtkMRMLColorTableStorageNode.cxx:137)
==17091== by 0xDCDE6D5: vtkMRMLStorageNode::ReadData(vtkMRMLNode*, bool) (vtkMRMLStorageNode.cxx:1067)
==17091== by 0xC9CD058: vtkMRMLColorLogic::CreateFileNode(char const*) (vtkMRMLColorLogic.cxx:730)
==17091== by 0xC9CC104: vtkMRMLColorLogic::CreateFreeSurferFileNode(char const*) (vtkMRMLColorLogic.cxx:593)
==17091== by 0xC9CE463: vtkMRMLColorLogic::AddFreeSurferFileNode(vtkMRMLFreeSurferProceduralColorNode*) (vtkMRMLColorLogic.cxx:863)
==17091== by 0xC9CF282: vtkMRMLColorLogic::AddFreeSurferNodes() (vtkMRMLColorLogic.cxx:987) [Less]
|
Posted
over 9 years
ago
by
jcfr
STYLE: Improve output of vtkMRMLColorLogicTest1 displaying line number
|
Posted
over 9 years
ago
by
lassoan
ENH: Allow qMRMLNodeComboBox base name setting for each node type
|