В письме от Thu, 13 Oct 2011 23:50:56 +0400, Cherevatenko Vsevolod <iuaa...@gmail.com> сообщал:

и все
равно виснет и клиент и серверный процесс, собака  :(


виснет при выгрузке, так ?

может быть если просмоьтреть в ldd удфку и сервер - увидим, что они гурзят разные версиии одной и той же библиотеки ?

When compiled with gcc hello.c, an executable file named a.out is created. Using the Linux command ldd a.out, which prints shared library dependencies, the required shared libraries are:
   libc.so.6 => /lib/libc.so.6 (0x4001d000)
   /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

The same dynamic linking loader is used to map a dll into the application's memory after it is running. The application controls which dynamic libraries are loaded and which functions in the libraries are called by using Linux dynamic loader routines to perform the loading and linking and to return the addresses of the required entry points.



может быть можно загнать сервер в отладчик и протрассировать все подхходящие вызовы dlclose ?
strace скорее всего слишком много выдаст...
ну и в паскалевском RTL можно попробовать найти системный код выгрузки SO-шки, ели он в принципе есть на Линуксе. в DDLках он есть...

Linux dll functions

Linux provides four library functions (dlopen, dlerror, dlsym, dlclose), one include file (dlfcn.h), and two shared libraries (static library libdl.a and dynamic library libdl.so) to support the dynamic linking loader. The library function are: dlopen opens and maps into memory the shared objects file and returns a handle
dlsym return a pointer to the requested entry point
dlerror returns either NULL or a pointer to an ASCII string describing the most recent error
dlclose closes the handle and unmaps the shared objects

http://www.ibm.com/developerworks/linux/library/l-dll/index.html


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/

Ответить