MantisBT - ParaView
View Issue Details
0010293ParaViewBugpublic2010-02-15 15:112010-03-01 21:58
Burlen 
Utkarsh Ayachit 
normalminoralways
closedfixed 
Development 
3.8 
0010293: PV Plugin Loader resource leaks (doesn't close dynamic library)
running with valgrind I see a bunch of leaks coming from

vtkPVPluginLoader::SetFileName

where vtkDynamicLoader::OpenLibrary is called. if the call is successful , vtkDynamicLoader::CloseLibrary is never called later. This introduces a bunch of memory leaks (which at the very least confound finding more serious leaks in valgrind output).

The right thing to do is always call vtkDynamicLoader::CloseLibrary at some point after the library is no longer needed.

A typical valgrind trace is included below.

 788 ==687== 267 bytes in 6 blocks are still reachable in loss record 43 of 51
 789 ==687== at 0x4C25153: malloc (vg_replace_malloc.c:195)
 790 ==687== by 0x400B1EC: _dl_new_object (dl-object.c:146)
 791 ==687== by 0x400647B: _dl_map_object_from_fd (dl-load.c:966)
 792 ==687== by 0x40083A7: _dl_map_object (dl-load.c:2235)
 793 ==687== by 0x400C46C: openaux (dl-deps.c:65)
 794 ==687== by 0x400E385: _dl_catch_error (dl-error.c:178)
 795 ==687== by 0x400CB63: _dl_map_object_deps (dl-deps.c:247)
 796 ==687== by 0x4012DA2: dl_open_worker (dl-open.c:326)
 797 ==687== by 0x400E385: _dl_catch_error (dl-error.c:178)
 798 ==687== by 0x40126C6: _dl_open (dl-open.c:615)
 799 ==687== by 0x16EE6F65: dlopen_doit (dlopen.c:67)
 800 ==687== by 0x400E385: _dl_catch_error (dl-error.c:178)
 801 ==687== by 0x16EE72AB: _dlerror_run (dlerror.c:164)
 802 ==687== by 0x16EE6EE0: dlopen@@GLIBC_2.2.5 (dlopen.c:88)
 803 ==687== by 0x86E5766: ??? (in /usr/lib/libGL.so.185.18.36)
 804 ==687== by 0x18D1F19D: vtkDynamicLoader::OpenLibrary(char const*) (vtkDynamicLoader.cxx:38)
 805 ==687== by 0x4F2CDD9: vtkPVPluginLoader::SetFileName(char const*) (vtkPVPluginLoader.cxx:127)
No tags attached.
Issue History
2010-02-15 15:11BurlenNew Issue
2010-02-15 15:13BurlenNote Added: 0019532
2010-02-25 17:13Utkarsh AyachitStatusbacklog => tabled
2010-02-25 17:13Utkarsh AyachitAssigned To => Utkarsh Ayachit
2010-02-25 17:30Utkarsh AyachitNote Added: 0019636
2010-02-25 17:30Utkarsh AyachitStatustabled => @80@
2010-02-25 17:30Utkarsh AyachitFixed in Version => 3.8
2010-02-25 17:30Utkarsh AyachitResolutionopen => fixed
2010-03-01 21:58Alan ScottNote Added: 0019679
2010-03-01 21:58Alan ScottStatus@80@ => closed

Notes
(0019532)
Burlen   
2010-02-15 15:13   
Steps to reproduce:

run pvserver in valgrind with the --leak-check=full option, load a plugin, disconnect.
(0019636)
Utkarsh Ayachit   
2010-02-25 17:30   
vtkDynamicLoader::CloseLibrary is called before application quits.

/cvsroot/ParaView3/ParaView3/Servers/Common/vtkPVPluginLoader.cxx,v <-- Servers/Common/vtkPVPluginLoader.cxx
new revision: 1.21; previous revision: 1.20
(0019679)
Alan Scott   
2010-03-01 21:58   
Trusting that Utkarsh got it.