[Clam-devel] reloading plugins and static variables...

Natanael Olaiz nolaiz at gmail.com
Thu Aug 7 16:47:00 PDT 2008


Hi.

I'm testing the David suggestions to keep a list of loaded dynamic 
libraries (i.e. plugins), and the currently loaded.
I declared:

    public:
        static std::string _currentlyLoading;

on RunTimeLibraryLoader.hxx. Is initialized on RunTimeLibraryLoader.cxx as:

    std::string RunTimeLibraryLoader::_currentlyLoading=std::string();

Is used it on virtual RunTimeLibraryLoader::FullyLoadLibrary, which is 
called from virtual RunTimeLibraryLoader::LoadLibrariesFromPath, which 
is called from virtual RunTimeLibraryLoader::Load.
For ladspa plugins loadings (calling Load() from a derived class) it 
works OK. But on AutomaticRunTimeProcessingLibraryLoader (which is on 
RunTimeProcessingLibraryLoader.cxx, instantiates a derived class from 
RunTimeLibraryLoader as an object, and call the Load() from there) gaves 
me a segmentation fault, like if the static variable were not defined. 
Furthermore, trying to access directly 
RunTimeLibraryLoader::_currentlyLoading (for instance: 
RunTimeLibraryLoader::_currentlyLoading="testing";) is the same.

TraceBack:
    #0: std::string::asign       /usr/lib/libstdc++.so.6
    #1: std::string::operator=   /usr/lib/libstdc++.so.6
    #2: AutomaticRunTimeProcessingLibraryLoader   (the above assignation 
_currentlyLoading="testing")

AutomaticRun..... is instantiated as a static object. Could be that the 
problem? I tried defining the variable as extern, without luck...

This is making me mad... :-/ The linker doesn't says anything when 
compiling...

Any clue?


Regards,
Natanael.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.clam-project.org/pipermail/clam-devel-clam-project.org/attachments/20080807/9c9f40e3/attachment-0002.htm>


More information about the clam-devel mailing list