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

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


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

        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.

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

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 

Any clue?

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

More information about the clam-devel mailing list