Hello. I'm using gcc 3.3.2. Here is simple example for problem that I encoutered. test.cpp: #include <dlfcn.h> #include <stdio.h> class klasa { int m_a; public: klasa() {} ~klasa() {printf("~klasa\n");} void set(int a) {m_a = a;} int get() {return m_a;} }; klasa Objekt; int main(int a, char** b) { const char* lib = "libscaner.so"; Objekt.set(a); if (a > 1) lib = b[1]; void* h = dlopen(lib, RTLD_LAZY); if (h == NULL) { printf("Error on loading %s: %s", lib, dlerror()); return 1; } a=Objekt.get(); printf("loaded\n"); dlclose(h); printf("closed\n"); return 0; } -------------------- end of test.cpp testso.cpp: #include <stdio.h> class klasa { int m_a; public: klasa2() {} ~klasa2() {printf("~klasa2\n");} void set(int a) {m_a = a;} int get() {return m_a;} }; klasa2 Objekt2; int dummy(int a) { Objekt2.set(a); return Objekt2.get(); } -------------------- end of testso.cpp I compile both files with command: gcc -o test test.cpp -ldl -lstdc++ gcc -o libdupa.so testso.cpp -shared -fPIC with gcc 3.3.2 on host with glibc 2.2.5. When I run this test on the same host (and other with glibc 2.2.5 or 2.2.4) all works ok: $> ./test libdupa.so loaded ~klasa2 closed ~klasa But if I run the test on host with glibc 2.3.2 destructor of klasa is called on dlclose: &> ./test libdupa.so loaded ~klasa ~klasa2 closed Problem does not occur when I compile this test case on host with glibc 2.3.2. Whats the problem? Is this gcc or glibc issue? Is the problem fixed on newer gcc? Regards Dominik Siatkowski