MatthewASimonson / r-orange

Automatically exported from code.google.com/p/r-orange
Other
0 stars 0 forks source link

testing for memory leaks #154

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
add a widget, and remove it. The memory footprint should reduce to the level 
before adding the widget. 

Moving the the QAbstractTableModel for Rtable qtWidget does not function 
like this. 

Original issue reported on code.google.com by anup.parikh on 28 May 2010 at 3:09

GoogleCodeExporter commented 9 years ago

Original comment by kylecovi...@gmail.com on 28 May 2010 at 8:37

GoogleCodeExporter commented 9 years ago
After calling sip.delete on a read Files object then calling garbage collection 
the 
following references were found to the widget::

Remaining references [{'isProcessing': 0, 'errorIcon': 
<PyQt4.QtGui.QGraphicsPixmapItem object at 0x05F88618>, 'oldPos': 
PyQt4.QtCore.QPointF(470.0, 50.0), 'widgetSize': PyQt4.QtCore.QSizeF(40.0, 
40.0), 
'warningIcon': <PyQt4.QtGui.QGraphicsPixmapItem object at 0x05F885D0>, 
'canvas': 
<PyQt4.QtGui.QGraphicsScene object at 0x02C32078>, 'shownLeftEdge': 
<PyQt4.QtGui.QPixmap object at 0x05F5ED50>, 'selected': 1, 'imageRightEdgeG': 
<PyQt4.QtGui.QPixmap object at 0x05F5EDF8>, 'instance': <base_readFile.readFile 
object at 0x05F86300>, 'imageRightEdgeR': <PyQt4.QtGui.QPixmap object at 
0x05F5EE68>, 
'outLines': [], 'widgetState': {}, 'imageRightEdge': <PyQt4.QtGui.QPixmap 
object at 
0x05F5ED88>, 'signalManager': <orngSignalManager.SignalManager instance at 
0x05894DC8>, 'infoIcon': <PyQt4.QtGui.QGraphicsPixmapItem object at 
0x05F88540>, 
'progressBarShown': 0, 'canvasDlg': <__main__.OrangeCanvasDlg object at 
0x029BDB70>, 
'shownRightEdge': <PyQt4.QtGui.QPixmap object at 0x05F5ED88>, 
'needsProcessing': 0, 
'icon': <PyQt4.QtGui.QIcon object at 0x05F884F8>, 'imageFrame': 
<PyQt4.QtGui.QIcon 
object at 0x05F88588>, 'imageLeftEdgeR': <PyQt4.QtGui.QPixmap object at 
0x05F5EE30>, 
'inLines': [], 'widgetInfo': <orngRegistry.WidgetDescription instance at 
0x058C7AA8>, 
'caption': 'Read Files (5)', 'imageLeftEdge': <PyQt4.QtGui.QPixmap object at 
0x05F5ED50>, 'imageLeftEdgeG': <PyQt4.QtGui.QPixmap object at 0x05F5EDC0>, 
'progressBarValue': -1, 'edgeSize': PyQt4.QtCore.QSizeF(6.0, 12.0), 'view': 
<orngView.SchemaView object at 0x02C32108>}]

It seems that there is only one memory leak which is good.  If we can find and 
destroy this we should be fine.  Perhaps???

Original comment by kylecovi...@gmail.com on 29 May 2010 at 3:48

GoogleCodeExporter commented 9 years ago
After tracing up I found in orngDoc the remove section.  On removal of the 
widget it 
was still being referenced in the following locations:

Remaining references [<PyQt4.QtGui.QGraphicsScene object at 0x02F2C078>, 
{'bWidgetDragging': False, 'widgetSelectionRect': None, 'doc': 
<orngDoc.SchemaDoc 
object at 0x02F2C270>, 'tempLine': None, 'movingWidget': None, 
'mouseDownPosition': 
PyQt4.QtCore.QPointF(155.0, 63.0), 'tempWidget': <orngCanvasItems.CanvasWidget 
object 
at 0x05B2C810>, 'menupopupLinkEnabledID': <PyQt4.QtGui.QAction object at 
0x02F2C198>, 
'selectedLine': None, 'lineEnabledAction': <PyQt4.QtGui.QAction object at 
0x02F2C198>, 'linePopup': <PyQt4.QtGui.QMenu object at 0x02F2C108>}, <frame 
object at 
0x06174758>, [<orngCanvasItems.CanvasWidget object at 0x05B2C810>], <frame 
object at 
0x0308F988>, <bound method CanvasWidget.updateWidgetState of 
<orngCanvasItems.CanvasWidget object at 0x05B2C810>>]

These are a lot of memory leaks.  I'm not sure what setting the widget to None 
would 
do.

Original comment by kylecovi...@gmail.com on 29 May 2010 at 3:56

GoogleCodeExporter commented 9 years ago
Setting the widget to None crashes the system.  These leaks should be handled 
separately.

Original comment by kylecovi...@gmail.com on 29 May 2010 at 3:58

GoogleCodeExporter commented 9 years ago
I'm moving this issue to the next release.  The system works OK with the leaks 
and it's 
something that we know about.

This is what we get for using spaghetti code.  In the next release this should 
be a 
priority to clean the code and refer to a widget in a central location.  This 
way 
deleting will not be a problem. 

Original comment by kylecovi...@gmail.com on 29 May 2010 at 4:02

GoogleCodeExporter commented 9 years ago

Original comment by anup.parikh on 21 Aug 2010 at 4:46